2019 Multi-University Training Contest 9

A. Rikka with Quicksort

题意 求 EX 快速排序复杂度。

做法 根据线性期望可加性,独立考虑长度为 \(m\) 的区段对答案的贡献。进行简单的公式推导,对 \(s(x)=\sum_{i=1}^{x}\frac{1}{i}\) 进行分块打表即可。

复盘

  • 问题可转化为按照某个排列依次删除元素,没删一个元素时,得分为所在连通块 size - 1【🐶】.
  • 先发现 \(m=1\) 的 Case 很可做,令 pair \((x,y)\) 表示,删除 \(x\) 时,\(y\)\(x\) 同在一个连通块。那么这样的 pair 出现的概率为 \(\frac{1}{|pos_x-pos_y+1|}\)
  • 按长度统计答案即可。
  • 然后 \(m \neq 1\),就不会做了,视野狭窄,比赛的时候一直想调整一下 \(m=1\) 的做法,考虑一个位置有序对对答案的贡献,但很遗憾,当距离小于 \(m\) 时,问题变得十分的复杂,甚至把问题转化成了涉及到最小值期望这样的问题。
  • 记住了啊!:期望求加法很简单,求极值很不简单
  • 所以该怎样想到舒适的解决问题的方法呢?
  • 利用到期望线性可加性的问题,最重要的事情,把答案分解成哪些东西之和。
  • 比如说这个问题,注意到【🐶】这句话,我们应该想想,能不能把答案分解成,区间 \([l,r]\) 做为那个连通块对答案贡献呢?
  • 于是就可以按照区间长度进行分类,问题就很好解决了。

B. Rikka with Cake

题意 矩形内有很多条射线,统计区域个数。

idea

  • 欧拉定理,统计点数边数即可。
  • 具体实现有请 F0_0H

具体实现

  • 上下左右做四次
  • 区间覆盖,单点查询

C. Rikka with Mista

题意 给集合 S,求每个子集和中 4 的个数之和。

idea

  • 折半枚举,预处理左右集,各子集元素和。
  • 按位统计贡献。
  • 对于每位,对右集中数字按后缀排序,枚举左集中选择的元素,二分。
  • 基数排序优化。
  • 具体实现有请 F0_0H

具体实现
同上


E. Rikka with Game

签到


F. Rikka with Coin

题意 10,20,50,100 四种面值的钱,至少携带多少张,能凑出 w[] 中任意一个数字。

做法

  • \(A=max_{i=1}^{n} [\frac{w[i]}{100}]\).
  • 10,20,30,40,50,60,70,80,90 可以用 10,20,20,50 四张钱凑出。因此答案的一个上界为 \(A+4\),设 \(ans = A+4\)
  • 设 100 面值的钱携带个数为 \(x_1\),那么存在最优解中有 \(x_1 \geq A-3\),因为 \(A=A-4\) 时,至少需要 8 张 50 的钱。\(A-4+8 \geq A+4\)
  • 依次枚举剩下的钱依次携带几张,设 50 携带 \(x_2\) 张,20 携带 \(x_3\) 张,10 携带 \(x_4\) 张。
  • 那么 \(x_1+x_2+x_3+x_4 \leq A+3\)
  • 先枚举 \(x_1,x_2,x_3,x_4\),再逐个判断 w[] 中的每个数字是否能凑出。
  • 对于一个数字的判定,依次枚举实际100,50,20用了多少张 \(x_1',x_2',x_3'\)
  • 比赛时默认 \(x_1'\) 能取到极大,所以 WA

emmmm 很引人深思的一个问题。

比赛时节奏把控太糟糕,前期被这题直接卡得没掉了。

逆风局,慢下节奏,小心求证,积极寻找视野中遗漏的东西,不要直接:“我做得很对,为什么 WA,烦死咯!”,这不叫证明,这叫憨憨。


G. Rikka with Travels

题意\((l_1,l_2)\) 这样的 pair 数,使得存在长度为 \(l_1,l_2\) 的不相交的链。

idea

  • 注意到,在一个连通块中,选出一条链,链长可以取到 1 到直径的每一个数字。
  • 统计每个点子树内直径,子树外直径。
  • 建坐标系,\(l_1,l_2\) 分别为横纵坐标,问题转化为求若干左下角为 \((0,0)\) 的矩形面积并。
  • 具体实现有请 F0_0H

具体实现

  • 换根DP
  • 单调栈计算面积
posted @ 2019-08-19 19:53  FST_stay_night  阅读(217)  评论(0编辑  收藏  举报