2025牛客寒假算法基础集训营3

B 智乃的质数手串

先考虑链而不是环的情况。

因为前面的元素不可能用于消去后面的元素,所以删除的顺序不影响有解性。

对于链的情况,我们直接用栈维护未消去的元素,每次插入新元素前尽可能删去栈顶,若最后栈中只剩最后一个元素则有解。

环有解等价于任意一个循环移位有解,而循环移位不破坏前面元素的相对顺序,于是我们直接复制一遍,滑动窗口即可。


D 智乃的Notepad(Hard version)

容易发现每次询问的最优策略:考虑 [l,r] 内的串构成的 Trie,我们从根开始 dfs,并且最后走通向深度最大节点的那条路,到达深度最大节点后不再回溯。

也就是求 Trie 边数的两倍减去最大深度。

最大深度就是 RMQ,容易处理,问题是如何求区间内的串构成 Trie 的点数。

如果我们把询问离线到 r 上,那么每次询问的便是在 l 之后的插入串覆盖点集的并。

想象我们第 k 次插入一个串相当于把路径上的点都染上颜色 k,用一个数组维护当前各个颜色点数,问题就变成求区间和,树状数组做就好。


E 智乃的小球

经典的速度交换可以看作直接穿过,最多碰撞次数就是对每个 1 前面的 1 求和,前缀和处理即可。

然后是求第 k 次碰撞时间,我们二分答案 mid

对每个 1,坐标小于 p2mid 的小球不会与之碰撞,我们二分出这个位置,利用前面的前缀和即可计算 mid 之内的碰撞次数。

郑州站的教训:实数域二分直接写成常数次更安全。


G 智乃与模数

这道比较板,求 nmodik 大之和,我们二分出这个第 k 大,然后对超过它的部分数论分块求和即可。

posted @   jzcrq  阅读(61)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
点击右上角即可分享
微信分享提示