Week2测试题解
AIZU2989
giao,全想着 L、R 逆推了,但是写挂了,爬。。实际上有更好写的做法
发现 ai 相对顺序无关,可以先从小到大排序。容易发现操作都是 小于某数的向左 大于某数的向右,ai 一直具有单调性(这个我想到了。。) 二分就好了
AIZU2990
注意,初始只能往右走。就是个 sb 题!!题目读错了哭
一直在想 set,但这题用 set 会很麻烦。
序列差分,算出每个点经过的次数 x,来回的次数就是 max{x},减去的前后缀也必定是 经过 x 次点的最左和最右。。。
AGC041B
不错的题,容易想到答案满足单调性,可以二分。二分的位置只要奋力超过或赶上 p 即可,那么 m 位评委尽量不投 p 就好了。
AIZU2992
不是很难的dp,可惜题目读不懂。。
显然 a,r,b 从大到小排序最优。dp,红色总数不能超过 totr,黑色总数不能超过 totb,所以 f[i, j, k] 表示前 i + j 中有 i 红,j 黑,红色总数为 k 的最大不改变颜色的气球数量
AIZU2995
好题!
考虑整棵树,每个点选 ci 还是 di,这跟“树”这个结构没有关系,就是一个经典问题:一个 n 个点 m 条边的图,每条边连接 ci 和 di,可以染黑 ci 或 di,问最大黑点数
显然是 min{|V|, |E|}:首先最多有 |V| 个,其次如果边为 V - 1(是树)那就是 V - 1
min{|V|, |E|} = |V| - 1 + [是否存在非树边],并查集维护就好了。
对于每个子树:dsu on tree。考虑到 有删除操作,用可撤销并查集维护。是真的难写(
AIZU2991
2^{n+1} 中选 2^n 个,也就是选一半
v 和 v ^ X 必然选一个,&值为 A 的对必然不选一个,|值为 O 的对必然不选一个(找这样的对,枚举子集即可
2-sat,输出卡行末空格恶心了我半天
AIZU2994
C = V - E + F
C:连通块数 V:点数 E:边数 F:内部区域数
(注意网格图经常考这个)
由期望的线性性得,E(C) = E(V) - E(E) + E(F)
而本题是树,F 为 0
所以 E(c1c2) = E(v1v2) + E(e1e2) - E(v1e2) - E(v2e1)
点点贡献:可以推柿子(别忘了组合数),也有更灵活的解法。考虑一对点 (a, b) 的贡献(a 在树 1 中,b 在树 2 中),是 1 / 4, 而总共有 n(n - 1) 对点,所以就是 n(n - 1) / 4
点边贡献:枚举树 2 中一条边 (u, v),与树 1 中点 x 的贡献是 1 / 8, 总共是 (n - 1)(n - 2) / 8
边边贡献:这个就不能 O(1) 算了,枚举树 2 中一条边 (u, v),与树 1 中边的总贡献是 (n - 1 - u和v在树 1 中连的边) / 16
套路,据我哥说在他们那个时候,乘积期望也是套路题哇!多练多练