20220321刷题日记

CF156D

Prufer 序列裸题,不做讲解。

CF662C

枚举行时候变换之后可以通过计数和看某一个数 \(0,1\) 的较少的个数来列式子,而这是一个异或卷积的形式,于是就可以用FWT做了。

但是没想到这个东西还可以用 dp 来做,转化题意之后我们可以得到进行尽量少的单点翻转操作使得经过行列操作之后全都为 \(0\),如果我们只考虑行操作的话,最后的答案显然是需要把所有列变成同一个状态,但是有了列操作,不过我们同样做就行,只要到最后看一下操作数量,用 \(n\) 减去去个 \(\min\) 即可。

所以我们可以设 \(f_{i,j}\) 表示满足经过 \(i\) 次单点操作之后列变成 \(j\) 的列的个数,不过注意最后统计答案的时候我们可以考虑翻转另外 \(n-i\) 个点,然后把整列翻转。

P4221

首先写出状压 dp 设 \(f_s,h_s,sum_s\) 分别表示答案,是否可行,以及和。考虑到州之间是有顺序的,所以我们可以直接枚举最后一个州是哪个,这样是 \(3^n\) 的,但是我们考虑整个过程其实是自己卷积,所以可以用 FWT 优化即可。

P4149

点分治裸题,然而一开始并没有做出来。思路主要是跨在用桶来统计。另外把所有点存起来方便处理,因为这样方便清空。

P3768

杜教筛套上整除分块复杂度也是 \(O(n^{\frac{2}{3})\),并且我们预处理的长度也约为 \(n^{\frac{2}{3}}\),开的太小会 \(T\)。按道理说开的越大大点跑的越快。

AGC038C

第一次做不是连续标号的莫比乌斯反演,一样交换求和顺序,然后我们考虑把一些能一起算的项弄到一起,一些不能算需要枚举的放在前面,然后渐渐化简。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章