51nod 1301 集合異或和(DP)

2022-05-19 20:35:23 字數 720 閱讀 4533

因為當\(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行,每...