高分 CF 题解
本博客写我做的 CF* 3000+ 的题目,这部分题目大多在我能力以外且颇有价值。
upd:不鸽了不鸽了!
CF1270H Number of Components
还是套路地考虑代表元,发现其作为代表元的条件就是前面的数正好就是最大的数。于是我们的任务变为单点修改,然后计数这样的点的个数。
接下来的操作就比较神奇:我们考虑 \(01\) 规划,那么条件变为 \(1\) 形成一个前缀,换而言之就是 \(01\) 和 \(10\) 的个数恰好为 \(1\),这样我们就可以用线段树维护了。
CF1147E Rainbow Coins
独立做出来的,应该说是非常简单的一道题。
首先我们肯定用两次询问得到相邻之间的状态,这时问题就变为了很多段,然后相邻颜色不同。
我们发现因为只有三种颜色,我们跳一个询问,若相同那么很好,若不同的话则说明这三个互不相同,那也很好。
于是我们再花两次询问得到跳一个的答案,就可以推出所有的颜色。
CF1286D LCC
独立做出来的,应该说是非常简单的一道题。
我们发现只有相邻相交才可能成为答案,于是答案的数量就只有 \(O(n)\) 个,于是考虑枚举。
我们容易枚举答案后 \(O(n)\) 地 \(dp\) 计算概率,考虑优化。
我们发现,每次将答案调小其实是释放了一些转移,于是用矩乘,线段树维护。
CF708E Student's Camp
首先容易想到暴力的 \(dp\),然后考虑把贡献记到右端点上,那么后面的是就顺理成章了。
CF1119H Triple
其实跟黎明前的巧克力非常像的啦~
首先考虑将每个操作变为 \((a_i,b_i,c_i)\to (0,b_i\oplus a_i,c_i\oplus a_i)\),最后再整体移位 \(\oplus a_i\)
这样最后每一位就只可能是 \(x+y+z,x-y+z,x+y-z,x-y-z\),可以通过总量、\(y\) 的符号、\(z\) 的符号、\(y/z\) 符号的异同列出四个等式解出来。
CF582D Number of Binominal Coefficients
考虑 \(\text{Kurmur}\) 定理:\(\binom{a+b}{a}\) 中 \(p\) 的次数为 \(p\) 进制下 \(a+b\) 的进位次数。
那么我们考虑一个数位 \(dp\):\(dp_{i,j,0/1,0/1}\) 为考虑到第 \(i\) 位,已经进了 \(j\) 位,是否小于限制,下一位是否进位。转移有亿些细节。
CF1028G Guess the number
这题很骚,很气人。
很容易想到一个做法,我们先询问 1 10000,小于再分别询问 21,4,2 这样子,大的就分叉询问。
我们发现这好像是差不多的样子,但是事实上那个奇怪的数据总能在最后找到一个长度为 10001 的段,然后就寄了。
事实上并不是全部平均分就是最优的。我们定义 \(dp_{i,j}\) 表示在第 \(j\) 轮询问 \(i\) 个数的最大范围。
容易发现这是好转移的,事实上这也是可以过的。
CF587D Duff in Mafia
简单 \(\text{2-sat}\) 题。按题意二分答案然后跑 \(\text{2-sat}\) 即可。代码写一年。
CF568E Longest Increasing Subsequence
马上更新~