HDU 5119 Happy Matt Friends(DP)
題目連結:傳送門
題意:
給定n個數,求從中選出任意個數異或起來值大於m的方案數。
分析:
動態規劃,設dp[i][j] 表示第幾次選第i個數的時候異或起來
值為j的方案數。dp[i][j^a[i]]+=dp[i][j];但是對空間有要求
我們可以用滾動陣列來寫。
程式碼如下:
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
const int maxn = 1<<20;
typedef long long LL;
LL dp[2][maxn];
int a[50];
int main()
{
int t,n,m,cas=1;
scanf("%d",&t);
while(t--){
scanf("%d%d",&n,&m);
for(int i=0;i<n;i++)
scanf("%d",&a[i]);
memset(dp,0,sizeof(dp));
LL ans=0;
int cnt = 0;
dp[0][0]=1;
for(int i = 0; i < n; ++i) {
memset(dp[cnt^1],0,sizeof(dp[cnt^1]));
for(int j = 0; j < maxn; ++j) {
int tmp = j^a[i];
dp[cnt^1][tmp] += dp[cnt][j];
dp[cnt^1][j] += dp[cnt][j];
}
cnt ^= 1;
}
for(int i =m;i<maxn;i++)
ans+=dp[cnt][i];
printf("Case #%d: %I64d\n",cas++,ans);
}
return 0;
}
相關文章
- HDU 5119 Happy Matt Friends(簡單二維dp)APP
- My Friends, Happy XmasAPP
- HDU-3172 Virtual Friends 並查集+map並查集
- HDU 3853 LOOPS(概率dp)OOP
- HDU 4669 Mutiples on a circle (DP , 統計)
- 【基礎dp】HDU 1260 Tickets
- hdu 3401 單調佇列+DP佇列
- HDU 4455 Substrings(預處理+dp)
- HDU 6415 Rikka with Nash Equilibrium (DP)UI
- HDU 3853 LOOPS:期望dp【網格型】OOP
- 【dp】HDU - 1069 Monkey and BananaNaN
- hdu4374單調佇列+dp佇列
- HDU 5326 Work (基礎樹形dp)
- hdu 4123 樹形DP+RMQMQ
- HDU6415:Rikka with Nash Equilibrium(dp)UI
- 【基礎dp】HDU 1176 免費餡餅
- HDU 5067 Harry And Dig Machine(狀壓dp)Mac
- HDU 1452 Happy 2004(唯一分解定理)APP
- D - New Friends
- HDU 1227 Fast Food(簡單二維dp)AST
- hdu 1069 Monkey and Banana(簡單dp)NaN
- HDU4427Math Magic (dp+滾動陣列)陣列
- HDU 3530 Subsequence (dp+單調佇列)佇列
- hdu 3507 斜率優化DP入門題優化
- hdu ---(4517)小小明系列故事——遊戲的煩惱(Dp)遊戲
- HDU3944 DP? (LUCAS定理+階乘預處理)
- 【基礎dp】HDU 1257 最少攔截系統
- hdu4313 貪心並查集 || 樹形dp並查集
- HDU 4326Game(比較難理解的概率dp)GAM
- hdu5435 數位dp(大數的處理)
- HDU7458-啟發式合併最佳化DP
- HDU 5235 Friends (2015 Multi-University Training Contest 2 搜尋+剪枝)AI
- Good story for dear friends.Go
- HDU-6415 Rikka with Nash Equilibrium (DP/找規律)UI
- HDU 1028 Ignatius and the Princess III:dp or 母函式函式
- HDU-1466 計算直線的交點數 DP
- 「暑期訓練」「基礎DP」免費餡餅(HDU-1176)
- HDU 4427 Math Magic【dp+優化+滾動陣列】【好題】優化陣列