CF1704

vp 拿到了 rk5500+ 的成绩,不愧是我。

以后的总结里我认为比较有意义的题会标 !,难题标

C(贪心)

开始读错题了以为是序列,后来发现是个环。。假设 i(imodm)+1 之间的长度是 Li,可以发现每次取最长的最优,直接做就好了。

!D

神秘题。算是对数列下标的一个观察。

考虑寻找一个不变量,而在值域上观察没有什么好的结果。考虑操作 (i,j)(i1,j+1)(i,j)(i1,j+2) 的区别,发现后面下标的和是 i+j+1,前面则不变。所以假如我们把每个“1”看做球,数组位置看做盒子,假如对每个球所处的盒子编号求和那么前面和不变后面和恰好 +1。之后就不难做了。

E(DP)

全部都非 0 很好做。引入 fi 表示 i 归零的时间,那么有转移 fv=av+(u,v)Efu。如果有 0 那么就模拟一下使得所有可能非 0 的位置非 0。这个过程最多 O(n) 步,可以直接模拟。

!F(博弈、SG 函数)

开始以为不能碰白格子懵逼了好久。

两边的策略显然是先抢对方的再碰自己的。如果 R,B 数量不相等就做完了。如果 RB 数量相等,那么第一个拿不到 RB 的人就输了。此时游戏变成了一个公平组合游戏,可以引入 SG 函数来处理。把形如 RBRBRBR 的子区间提取出来,那么当前局面的 SG 值就是它们的异或和。对于单个子区间,答案只和它的长度有关。引入 fn 表示长度为 n 的 SG 值,它的所有后继局面是 i[0,n2],[i]×[ni2](此处用 × 表示游戏的组合),DP 可以 O(n2) 求出 f。把 f 打个表发现有个长度为 34 的循环节。这样就可以 O(n) 做了。

找循环节可以善用 Ctrl+F。

G(字符串匹配、构造)

想了两天后放弃的题。

先考虑枚举起点 i 然后判断,如果把 aiai+1 放在一起观察,就可以发现 bjai+bj+1ai+1 恰好为 j=1i+1[jS](1)ji+1。如果把相邻两项做差,可以发现它代表的就是 i+2 是否放置,这个值是在 [0,1] 之间的。

定义 ci 表示 ai2+2ai1+aidibi2+2bi1+bi,那么一个必要条件是 j[i+2,i+m1],dji+1cj[0,1]。这像极了一个字符串匹配问题,可以用 FFT 做到 O(nlogn) 或者用 bitset 做到 O(n2/w)

上面的考虑实际上忽略了 aiai+1 的处理。我们需要 i+1 以前操作对 ai 操作的和为 b1ai,并且奇偶个数差为 b1+b2aiai+1。这个问题相当于在 {0,2,4,},{1,3,5,} 中各自选 a,b 个数使得 ba=x 且差为 y。可以先钦定选所有偶数,然后问题就相当于在 [1,i+1] 中选 p 个数使得和为 q。连续非负整数中选数的一个结论是若所有能表示出来的数是连续的,那么只要求最小值和最大值即可。构造的话只需要从大往小选,如果不选会使得后面不合法就选。到这里就做完了。

一些反思:虽然考虑 ii+1 对应的两个相关限制很精妙,但事实上如果把选与不选看做 0/1,那么条件相当于一个方程组。做一下消元就可以立即得到上面结论。还有这个选数问题先钦定竟然没想到,枯了。

一些补充:用 FFT 做字符串匹配的过程是把匹配的条件转化成一个代数式,并使他为 0。比如这里就是 (dicj)(dicj1)=0。然后条件的逻辑与相当于求和后也为 0,这可以用 FFT 求出来。用 bitset 实际上就是考虑字符 dj 能与哪些位置匹配,然后对所有 dj 对应的位置取交就是答案。不能直接上 KMP 的原因是真实的 border 可能比传统意义上的 border 要长,因为匹配并不一定完全相等。

!H1

上面那个 G 已经消耗掉了我改 H 的欲望,所以咕了

还是来补下 H1。一开始被题目的奇怪操作折磨了好久,然后才意识到可以建图。建出图来被 pi 干扰了好久还是不会做。。

考虑固定 b 计数 a,那么 ba 的一个显然的限制是:bii,abi=i。尝试在抽象的模型上讨论问题。把这个限制建个图可以发现合法的图为若干条链,并且这样的链集合和原来的 b 是一一对应的。那么继续考虑什么样的 a 能构造出链。这个问题等价于考虑链的顶端和孤立点怎么填。链的顶端是任意填的,单点不能填链尾因为我们不能通过操作 p 来让后面的点覆盖这个单点的操作。上面就是一个充要条件了。那么可以枚举单点和链的个数。答案为:

ij(ni)(nij)i(ni)!(nij1j1)1j!(n1)j

i 是单点个数,j 是链的个数。意思是先把 i 个点分开并标号,然后把点看成球,链看成盒子塞进去。最后由于盒子是没区别的所以除个 j! 即可。

看到这种奇怪的题多建图,多分离无关条件,还有不要看到啥都想 DP。

posted @   yllcm  阅读(41)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下
点击右上角即可分享
微信分享提示