CF #737(div2)C. Moamen and XOR 与和异或-找规律
生活随笔
收集整理的這篇文章主要介紹了
CF #737(div2)C. Moamen and XOR 与和异或-找规律
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題意 :
- 給 n 和 k (<2e5),保證每個數ai < 2^k,問使得 𝑎1 & 𝑎2 & 𝑎3 & … & 𝑎𝑛≥𝑎1⊕𝑎2⊕𝑎3⊕…𝑎𝑛 的序列個數 % (1e9 + 7)。
思路 :
- ai < 2^k 即 每個數最多k位(提示從第i位來看)
- 注意此題是組合數C而不是排列A,比如001和100,本質上是挑出位置放1,看有幾個位置可以放1.
- 從小樣例來看,考慮第i位,且從最高位開始往后考慮
- 若n為奇數 :若要使得與的結果大于等于異或的結果,只要不是奇數個1和偶數個且不為0個的0的情況(是小于),否則都是等于(滿足條件)(偶數個1和奇數個0,奇數個1和0個0,0個1和奇數個0)。單第i位來看 sum = Cn0+Cn2+...+Cnn?1+1=2n?1+1C_{n}^{0} + C_{n}^{2} + ... + C_{n}^{n-1} + 1 = 2^{n-1} + 1Cn0?+Cn2?+...+Cnn?1?+1=2n?1+1,因為有k位,且由于只有小于和等于,那么小于的情況被排除了,只剩下等于,那么k位中的每一位都互不干擾,所以總的方案數就是sumk{sum}^{k} sumk。
- 若n為偶數 : 小于的情況 :奇數個1和奇數個0;等于的情況 :偶數個1和偶數個0,0個1和偶數個0;大于的情況 :偶數個1和0個0。那么sum = Cn0+Cn2+...+Cnn=2n?1C_{n}^{0} + C_{n}^{2} + ... + C_{n}^{n} = 2^{n-1} Cn0?+Cn2?+...+Cnn?=2n?1因此,若為大于,直接加上后面隨意組合的情況,若為等于,去遞歸下一位。
總結
以上是生活随笔為你收集整理的CF #737(div2)C. Moamen and XOR 与和异或-找规律的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CF #737(div2)B. Moam
- 下一篇: Smzzl with Greedy Sn