做题记录——1.22-1.26
老年选手要假装在训练。
2022.1.22
CF516D
老年选手画了个图大概懂了。
首先这个 \(f_x\),实际上就是 \(max(dis(x,a),dis(x,b))\),其中 \(a,b\) 是直径的两个端点。
那么考虑枚举每个点,硬点这个点为 \(min\) 的最大答案。
先把直径拉直。
如果这个点在直径上,那么可以二分出直径上的两个端点,满足 \(f_y \geq f_x\)。然后这些 \(y\) 是一个区间。那么就转化成了主席树上的问题。
如果这个点不在直径上,那显然可选的点在它的子树里。即计算它的子树内 \(f_z \leq f_x+l\) 的方案数。这玩意可以线段树合并。
时间复杂度是 \(O(qn\log n)\),应该能过。
哦好像还有更牛逼的做法。你发现这棵树满足以 \(f_x\) 最小的节点 \(x\) 为根,\(f_{fa_y} \leq f_y\)。
然后你 two-pointer 从大到小扫。加入直接加,删除直接减。你发现并不影响答案。
这玩意是 \(O(qn\alpha(n))\) 的,非常 nb。
CF830D
一生之敌 combinatoric。
哈哈哈哈哈哈哈哈哈俺把自己的转移方程调出来了哈哈哈哈哈哈哈哈哈哈哈哈。
设 \(f_{i,j}\) 表示高度为 \(i\) 的子树内,选出 \(j\) 条不相等的方案数。
以上五种情况,分别对应
1:根节点不选
2:根节点独立成一条链
3:根节点跟某个子树里的链结合
4:根节点跟同个子树里的两条链结合
5:根节点跟不同子树里的两条链结合
。
啊哈哈哈哈哈我感觉我非常牛逼。
但是被卡常了(悲)。
把两个循环合在一起就过了。
CF908G
我驲。
这个 sb zsh 又一次没有想到把 sort 数位的时候拆成 11111 来考虑。
没救了。
CF79D
CF79D
我超。长见识了。
这个区间 xor 1 可以转化成在差分序列上 xor 两个点。
那就相当于在 xor 序列上硬点两个距离 \(l\) 的点变成 1。
那就 bfs 一下转移代价,然后状压就行了。
CF601E
老年选手毛估估了一下,可以线段树分治。
这玩意复杂度有点大,是 \(O(t V\log n+ qk)\),不知道能不能跑得过。其中 \(t\) 是展品的个数,\(V\) 是体积。可以根据询问的时间剪个枝。
看了洛谷题解区,觉得老年选手的做法很有道理!
CF1279F
我草,老年选手有点牛逼。
考虑 \(kl \geq n\) 的时候答案就是 0,就不管他。
然后老年选手想到了根号分治,并口胡出了做法。
然后老年选手感觉自己跑不过去,寄了。
老年选手研究一波正解。
2022.1.23
心态炸穿了。
2022.1.24
学弟讲数据结构,非常震撼。
可以看我的数据结构博客。
2022.1.25
鸽子回来更新了 /cy。
CF997C
考虑大力容斥。
然后你发现有个乘积挺难算的。
老年选手看了题解,发现自己原来会二项式定理!
CF1523E
暴露出了老年选手不会概率期望的本质。
首先这个
其中
相当于把期望转化成一个后缀和的形式。
在这题里,$s_i $ 表示的就是前 \(i-1\) 个球已经放下,不死的概率。
那么
意义是在前 \(i-2\) 个球上绑定 \(k-1\) 个空位。
CF1278F
带入原式:
然后就可以大力计算了。
之后有一个牛逼的线性做法。俺在借助 cmd 题解的情况下推出来了!我真牛逼!
CF1097F
反演+bitset 牛逼题。
2022.1.26
vp 了场 div2。
要回家了,颓了一天。
终于能回家了。。。。。。。

浙公网安备 33010602011771号