省选模拟32
A.
看了半天发现这玩意就是个积性函数,满足质数处的取值好求,$p^k$处取值可以简单dp预处理,所以直接套个min_25筛就完了。
于是这题就成了一大堆模板的堆砌,拉格朗日插值+min_25筛+dp,虽然看起来很麻烦但是似乎都很显然?
一个小优化:对于所有的自然数幂和,在比较小的时候不必全都插值,可以预处理一部分。
调了好久。
B.
考虑建出来trie树,那么现在的问题是判断一个节点内部有没有值。
这个东西可以考虑容斥,任意两个不相等=全集-两个相等+3个相等。
所以建出来5课trie树,分别维护上面那几个东西就行了。
然而会被卡空间,所以这并不是正解。
但是某些大神发明了一些神奇的压空间方法:因为左右儿子必然有一个是自己的编号+1,所以可以压掉一个儿子,用某个数用不到的最高位存压掉的是哪个儿子。
trie树的size大小可以开成short,假如爆了就用某个数用不到的最高几位存一下。
对于trie树,假如现在某个点下面只有一条链,那么可以压成一个节点。
于是就能开下了。
C.
考虑枚举一个矩形边框,那么满足的条件应该是四个边界都有点,并且两种摆放方案(对角)最多不满足一个,那么可以状压dp。
如果逐格转移的话复杂度会死,考虑预处理出来每种格子会使那些格子变成1,然后对于每种状态转移就行了。