CodeForces - 1174D Ehab and the Expected XOR Problem(构造+思维+位运算)
生活随笔
收集整理的這篇文章主要介紹了
CodeForces - 1174D Ehab and the Expected XOR Problem(构造+思维+位运算)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目鏈接:點擊查看
題目大意:給出一個 n,再給出一個 x,要求構造一個數列,滿足該數列的所有子串的異或和都不等于 0 且都不等于 x,在滿足上面的條件下盡可能長
題目分析:因為這個題目最終的目標是需要讓所有的“子串”的異或和都不等于某個值,因為是連續的,所以不難想到可以對于答案數組求一下前綴異或和,此時所有的“子串”都可以通過前綴異或和的任意兩個數字表示出來,如 (?a[ l ] xor a[ l + 1 ] xor ... xor a[ r - 1 ] xor a[ r ] )?= sum[ r ] xor sum[ l - 1 ]
那么我們現在的目標就轉換成,構造出一個前綴異或和,需要滿足以下兩個條件:
更具體的,對于某個數字 i 來說,i 和 i xor x 這兩個數只能選擇一個,所以我們掃一遍能選則選就好了
最后構造出來的是一個前綴異或和,如果想要還原原數組的話,可以利用 a[ i ] = sum[ i ] xor sum[ i - 1 ] 進行還原
代碼:
?
?
總結
以上是生活随笔為你收集整理的CodeForces - 1174D Ehab and the Expected XOR Problem(构造+思维+位运算)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CodeForces - 364A Ma
- 下一篇: CodeForces - 967D Re