7.18 史也分好坏,R959 是好史。
CF R 959 (Div.1+2)
Solve : A~E (5/8)
Rank : 777
Rating : \(2117-1=2116\)
Perf : 2113 | 2094
发挥评价:Bad
唉,天天喂这种比赛。
然后我自己在简单题上唐完了,被卡住了,而且还被 cf 的波特验证控住了。
以后少慌,加快速度,提前截好图。
(其实最后已经会 G 了写完就上大分,但是来不及咯)
争取下次上分吧。
CF1994D
(Me *2000)
长为 \(n\) 序列 \(a_i\)(\(n\le 2000,a_i\le 10^9\))
进行 \(n-1\) 次操作,第 \(i\) 次可以选两个模 \(i\) 同余的点连边,尝试构造一个生成树。
提示:倒序考虑(归纳法),抽屉原理。
CF1994E
(Me *2100)
不好玩的题目,答案跟树形无关,致敬传奇牢桂。
CF1994F
(Me *2500)
给定一颗无向连通图,边有黑白色,保证所有点仅用白边也联通。
构造一个欧拉回路使得经过所有白边。
很酷的题目,我的第一想法是先联通白边,再加,但是不好加。
此时反而可以从删黑边的角度考虑,考虑每个黑边构成的连通块,有奇数个奇点就寄了。
否则一定行的,只需要建立一颗 dfs 树,奇点就删除到树上祖先的边,就搞定了(根咋办?由于奇点为偶数,所有非根行,根就行)
CF1994G
(Me *2300)
给定 \(n\) 个数 \(a_i\) 和 \(p\),求一个 \(x\) 使得 \(\Sigma a_i\oplus x=p\)。
但是 \(a_i\) 和 \(p\) 都是长为 \(k\) 的二进制 \(0-1\) 串,而且 \(n\times k\le 2\times 10^6\)。
明天来写。
我赛时做法是对的……
我们先观察官方 Solution:
Think of the most stupid solution you can do
Done!
如如!
官解是爆搜,记忆化,剪枝后复杂度就对了。
讲一下个人的 DP 做法:
容易发现我们可以按位操作,不同位之间操作独立(注意并不是互不影响!)
这样这 \(n\) 个数具体是多少就不重要了,重要的只是每一位上有多少个 \(1\)。
变成了:每一位上有两种选择方法,问能否凑出某个数,这是不简单的。
先变成默认选小的然后考虑 \(n\) 个位置是否变大,如果全选小的和已经超过就不行。
我们可以从大到小位考虑,并设一个 \(dp_{i,j}\) 表示当前已经考虑了前 \(i\) 大的位是否增加后离 \(s\) 还有 \(j\times2^{k-i}\) 的距离(小的部分暂时忽略,后面扫到那位再加上)
这时候发现一个重要性质:后面所有位能加的都加,由于每位最多 \(n\times 2^{k-x}\),加起来也不到 \(n\times 2^{k-i}\)。
换句话说第二维开到 \(n\) 即可,然后直接 DP,复杂度 \(O(nk)\)。