CodeForces - 1174D Ehab and the Expected XOR Problem(构造+思维+位运算)
題目鏈接:點(diǎn)擊查看
題目大意:給出一個(gè) n,再給出一個(gè) x,要求構(gòu)造一個(gè)數(shù)列,滿足該數(shù)列的所有子串的異或和都不等于 0 且都不等于 x,在滿足上面的條件下盡可能長(zhǎng)
題目分析:因?yàn)檫@個(gè)題目最終的目標(biāo)是需要讓所有的“子串”的異或和都不等于某個(gè)值,因?yàn)槭沁B續(xù)的,所以不難想到可以對(duì)于答案數(shù)組求一下前綴異或和,此時(shí)所有的“子串”都可以通過(guò)前綴異或和的任意兩個(gè)數(shù)字表示出來(lái),如 (?a[ l ] xor a[ l + 1 ] xor ... xor a[ r - 1 ] xor a[ r ] )?= sum[ r ] xor sum[ l - 1 ]
那么我們現(xiàn)在的目標(biāo)就轉(zhuǎn)換成,構(gòu)造出一個(gè)前綴異或和,需要滿足以下兩個(gè)條件:
更具體的,對(duì)于某個(gè)數(shù)字 i 來(lái)說(shuō),i 和 i xor x 這兩個(gè)數(shù)只能選擇一個(gè),所以我們掃一遍能選則選就好了
最后構(gòu)造出來(lái)的是一個(gè)前綴異或和,如果想要還原原數(shù)組的話,可以利用 a[ i ] = sum[ i ] xor sum[ i - 1 ] 進(jìn)行還原
代碼:
?
?
總結(jié)
以上是生活随笔為你收集整理的CodeForces - 1174D Ehab and the Expected XOR Problem(构造+思维+位运算)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: CodeForces - 364A Ma
- 下一篇: CodeForces - 967D Re