因為當\(a時,會存在在二進位制下的一位,滿足這一位b的這一位是\(1\),\(a\)的這一位是\(0\).
我們列舉最大的這一位。設為\(x\)吧。
設計狀態。\(dp[i][j][1/0]\)代表考慮了前i個數,異或和為j的情況下\(b\)的第\(x\)位為\(1\)或\(0\)有多少種情況。
然後隨便轉移一下,再隨便統計答案一下就好了。
如果不知道如何轉移,就看**吧。
#include#include#include#include#includeusing namespace std;
const int mod=1e9+7;
int n,m,mx,dp[2100][2100][2],ans;
int read()
while(ch>='0'&&ch<='9')
return sum*f;
}int main()
if(j<=n)
dp[j][k][0]=(dp[j][k][0]+dp[j-1][k][0])%mod;
dp[j][k][1]=(dp[j][k][1]+dp[j-1][k][1])%mod;
}} for(int j=i;j<=min(i*2-1,2047);j++)ans=(ans+dp[mx][j][1])%mod;
} printf("%d",ans);
return 0;
}
51nod1301 集合異或和
已知兩個整數n與m,你需要構造兩個整數集合x與y,且需要滿足以下要求 1 對所有的xi x,滿足1 xi n 對所有的yj y,滿足1 yj m x與y可以為空集 2 x y 但不要求集合x與y的元素個數,只要兩者沒有交集即可 不妨設構造後的集合x含有n個元素,而集合y有m個元素,令 a x1 xo...
51nod 1301 集合異或和
已知兩個整數n與m,你需要構造兩個整數集合x與y,且需要滿足以下要求 1 對所有的xi x,滿足1 xi n 對所有的yj y,滿足1 yj m x與y可以為空集 2 x y 但不要求集合x與y的元素個數,只要兩者沒有交集即可 不妨設構造後的集合x含有n個元素,而集合y有m個元素,令 a x1 xo...
51nod 1577 異或湊數
從左到右一共n個數,數字下標從1到n編號。一共m次詢問,每次詢問是否能從第l個到第r個數中 包括第l個和第r個數 選出一些數使得他們異或為k。資料量比較大。輸入請用掛 1 23 4 5 6 7 8 intread 輸出請用puts input 單組測試資料。第一行乙個整數n 0output m行,每...