3
https://acm.hdu.edu.cn/showproblem.php?pid=6765
题意:树上每个点有个颜色,多次询问,每次问两条链上哪条颜色数更多。保证其中一条链的颜色数多于另一条的两倍。
考虑类似想法的做法,给每种颜色随一个权值,然后只要比路径上权值的最小值就可以了。多随几次。
https://www.luogu.com.cn/problem/AT_arc120_f
枚举一个点算贡献。天才地考虑把链变成环。然后成功的缩小了问题的规模。一直做就可以了。
https://www.luogu.com.cn/problem/CF1025G
使用停时定理。对于一个局面构造其势能函数 \(\Phi\),只要每做一次操作,\(\Phi\) 都期望减少 \(1\),且终止局面的 \(\Phi\) 为 \(0\),那么一个局面的 \(\Phi\) 就是其期望操作次数。
这题设有 \(m\) 个菊花,第 \(i\) 个菊花的大小是 \(b_i\)。定义一个局面的 \(\Phi=\sum f(b_i)\)。那么有 \(\sum(2f(b_i)-f(b_i+1)-(b_i-1)f(0))=m\)。
不妨钦定 \(f(0)=0,2f(b_i)-f(b_i+1)=1\)。此时 \(f(i)=1-2^i\)。
答案即为 \(\sum f(b_i)-f(n-1)\)。
https://www.luogu.com.cn/problem/CF1951G
设当前有 \(t\) 个球还活着,第 \(i\) 个球和第 \(i+1\) 个球的间隔为 \(b_i\)。那么 \(\sum(2f(b_i)-f(b_i+1)-f(b_i-1))=n\)。
这题我们不能钦定每个球的贡献相等了,否则会出现 \(2f(b_i)-f(b_i+1)-f(b_i-1)=\frac{n}{t}\),这个 \(t\) 不是定值了。
注意到 \(\sum b_i=m\),钦定 \(2f(b_i)-f(b_i+1)-f(b_i-1)=\frac{nb_i}{m}\) 即可。此时 \(f(i)=-\frac{n}{m}\binom{i+1}{3}\)。
https://codeforces.com/gym/103428/problem/C
首先用原根转化成模意义下 01 背包。
考虑做 01 背包的过程,首先是枚举物品大小 \(x\),然后找出所有满足 \(f_i=0,f_{i-x}=1\) 的位置 \(i\),将 \(f_i\) 更新为 \(1\)。这样每个 \(i\) 都只会被更新一次,所以只要能以比较好的复杂度找到待更新的位置,做法就是对的。
注意 \(f_i=0,f_{i-x}=1\) 和 \(f_i=1,f_{i-x}=0\) 的数量是一样的。只需找出所有 \(f_i\not=f_{i-x}\) 的位置即可。这个可以二分+哈希。用树状数组维护哈希值,复杂度 \(O(n\log^2n)\)。
https://codeforces.com/gym/102978/problem/A
宇宙题。首先如果没有 \(a_{r,c}=v\) 的限制可以直接把 \(k-1\) 条轮廓线画出来,把第 \(i\) 条轮廓线往右下平移 \(i-1\) 个单位距离,然后 lgv。
考虑 \(a_{r,c}=v\) 对应到轮廓线上是在说什么,它等价于:
- 第 \(v-1\) 条轮廓线在格子 \((r+v-2,c+v-2)\) 的左上方;
- 第 \(v\) 条轮廓线在格子 \((r+v-1,c+v-1)\) 的右下方。
等价于:
- 恰有 \(v-1\) 条轮廓线在格子 \((r+v-2,c+v-2)\) 的左上方;
- 第 \(v\) 条轮廓线在格子 \((r+v-1,c+v-1)\) 的右下方。
等价于:
- 恰有 \(v-1\) 条轮廓线在格子 \((r+v-2,c+v-2)\) 的左上方;
- 没有一条轮廓线经过了 \((r+v-2,c+v-2)\) 这个点。
然后就可以 lgv 了,在矩阵的每个位置上放一个多项式 \(a_0+a_1x\),其中 \(a_0\) 是在格子 \((r+v-2,c+v-2)\) 右下方的方案数,\(a_1\) 是在左上方的。答案即为行列式的 \(v-1\) 次项系数。这个可以插值。
中间那一坨逻辑感觉还是有点绕的,我想了好久!

浙公网安备 33010602011771号