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:

  1. Think of the most stupid solution you can do

  2. 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)\)

posted @ 2024-07-19 21:45  Fun_Strawberry  阅读(36)  评论(0)    收藏  举报