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號