2025.10.13模拟赛
赛时
T1,想了一会秒了
T2开想,没有往异或差分上想,倒是想到了一个前缀和转化,没有卵用
区间反转经典套路,想异或+差分(sgz大佬说的)
然后我就像在原序列上操作,考虑到一个性质,区间操作的端点重合是不优的,考虑贪心,直接选第一个1反转即可
用双指针可以做到 \(O(nq)\) ,大概2h的时候想到了
因为不是正解,所以考场上怎么也想不出如何进行下一步了,真的想破脑袋也想不到啊
看T3,想把贡献拼起来,然后发现有重复,怎么办?
只好打爆搜,然后打表,没有发现任何规律。。。
然后赛时大概剩20分钟打完了所有的代码,算是打到极限了
赛时策略还可以,就是没实力。。。
赛后
T2考虑异或差分,对于一次反转操作,只需要修改 \(l\) 和 \(l+k\) 两个即可
所以对于 \(%k\) 相同的剩余系,询问是独立的
考虑在同一个剩余系中的答案统计,从第一个1开始,相邻的两个1进行合并是最优的,考虑这个怎么统计
对于一次询问,一个剩余系中包含的1个数为偶才有解,有k个区间都要满足,这个没法做到快速判断
偶数个是很好的性质,就是异或偶数次为0,对于每一种剩余系副一个随机权值,前缀异或和就好了
考虑答案的统计,钦定我们先和并最后一个1,当统计答案的前缀和时,从 \(i-1\) 到 \(i\) 只用考虑 \(i\) 变化带来的贡献,考虑直接递推 \(now_i\) 和 \(lst_i\)
然后考虑因为异或差分会在 \(l\) 和 \(r\) 时出现错误,单独统计答案,讨论边界非常麻烦
T3怎么考虑枚举顺序?
lmy大巨的做法:
首先经典的dp套路,钦定大法,相当于强制有序,所以固定一个 \(a_i\) 让所有的都小于它,每次用一个 \(a_i\) 拼起来,就能求答案,经典的dp转移方法
50pts,一个简单的dp转移方程
hrz大佬赛后教我观察打表的方式,考虑数的差,然后发现差和原来的重合
sxht大佬教的直接观察的方法,考虑 \(dp_i\) 拆成 \(dp_{i-1}\) 和 1,所以就考虑没有1时的贡献,考虑形如 $ 2*(a1+a2....)$ ,就除以2即可

浙公网安备 33010602011771号