CSP-S 2024 第十次

AK 了就结束,USACO 赛制是吧(

神秘难度排序,D<C<A<B

A

手模一下可以发现线性基里的数最多也只有两位,考虑模拟一个数插进线性基的过程。

对于 2x,其会依次异或上 2x+2x,2x+2x……直到线性基里找不到最高位为 x 的数,或者某时刻异或上了一个 2x

对于 2x+2y,无需考虑消去两位的顺序,x,y 都会经历上述的变化。

这个变化的过程实际上就是在遍历一条链,于是直接用并查集把这条链维护出来,

具体地,对于线性基中的数 2x+2x,从 xx 连边,对于线性基中的数 2x,从 x0 连边,

插入一个数时只需要找其所在链的结尾,在并查集上找祖先即可。

B

考虑钦定一个非叶子为根,从下往上贪心。设 su 表示只在 u 子树内操作,还有可能清除 u 子树的情况下,u 子树的叶子上至少还有多少石头,

(x : y 表示 x 点上有 y 块石头)

比如考虑这棵树上的 2 子树,当然可以清扫 (4,5) 两次使得叶子上没有石头,但这样 2 子树就不可能清除了,

正确做法是清扫 (4,5),(3,4),(3,5),所以 s2=2

k=vson(u)sv,则此时在 u 子树内进行的操作会使 k 减去 2au 减去 1

之后在 u 子树外进行的操作如果对 u 子树有影响,那么其会使 kau 都减去 1

所以任意时刻,还有可能清除 u 子树当且仅当 kau

考虑此时在 u 子树上能做几次操作。首先每次操作会使 au 减去 1,不能做超过 au 次操作,

另外假设做了 x 次操作,那么需要保证 k2xaux,则不能做超过 kau 次操作,

可以发现上面两个条件已经保证操作次数不超过 k/2 了,

但是考虑一种极端情况,有一个 sv 超过了 k/2,那把除其以外的所有子树和其匹配完之后就匹配不了了,

也就是说这种情况下,不能做超过 ksv 次操作。

而肯定是进行越多次操作越好,设最多能做 o 次操作,则 su=k2o

C

考虑一个子集和 s 可以使 k[s/2,s] 合法(懒得考虑向上取整了,s 可以使 2k[s,2s] 合法),

注意到以此法产生的 2k 取值区间并起来之后只有 O(logV) 个,所以每次加进一个 ai,维护当前区间并即可。

具体地,若加入 ai 前存在取值区间 [x,y],则加入 ai 后还存在取值区间 [x+ai,y+2ai],扫描线一遍把它们并起来即可。

D

区间排序问题考虑莫队,发现只有加入的话可以用并查集维护当前围成的圈(也就是当前形成的连通块),

回滚莫队套可撤销并查集即可。

posted @   Jijidawang  阅读(122)  评论(7编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示