hdu 1565 状态压缩dp
2013-08-14 20:31
295 查看
#include<stdio.h> #include<string.h> int Max(int a,int b) { return a>b?a:b; } int dp[3][1<<21]; int map[30][30]; int s[1<<21]; int main() { int i,j,k,n,num=0; for(i=0;i<(1<<21);i++) if(!(i&(i<<1))) s[num++]=i; while(scanf("%d",&n)!=EOF) { int limit=1<<n; for(i=0;i<n;i++) for(j=0;j<n;j++) scanf("%d",&map[i][j]); memset(dp,0,sizeof(dp)); int p=0; for(i=0;i<n;i++) { p^=1; for(j=0;j<num;j++) { int sum=0; if(s[j]>limit) break; for(k=0;k<n;k++) if(s[j]&(1<<k)) sum+=map[i][k]; for(k=0;k<num;k++) { if(s[k]>limit) break; if(!(s[j]&s[k])) dp[p][s[j]]=Max(dp[p][s[j]],dp[1-p][s[k]]+sum); } } } int max=0; for(i=0;i<num&&s[i]<=limit;i++) max=Max(max,dp[p][s[i]]); printf("%d\n",max); } return 0; }
相关文章推荐
- hdu 1565 状态压缩dp
- HDU 5418 Victor and World(状态压缩路径DP或+floyd 两种方法 求 玈行商问题)经典
- HDU 4352 XHXJ's LIS(数位dp&状态压缩)
- TSP 旅行商问题(状态压缩dp)
- light oj 1057 Collecting Gold(状态压缩dp)
- HDU 2825 Wireless Password AC自动机 + 状态压缩DP
- hdu 5180 状态压缩 dp 打表
- HDU4336——期望+状态压缩DP——Card Collector
- 洛谷 1052 dp 状态压缩
- HDU 1565 方格取数(1) 状态压缩DP
- hdu-4778-Gems Fight!---状态压缩dp
- Poj 1185 炮兵阵地 【状态压缩dp】
- 【HDU3341】AC自动机状态压缩DP,或者说hash枚举DP,-------出题人卡常数都是狗!!!!!
- POJ-3020 Antenna Placement 最大独立集 | 状态压缩DP
- uvalive4490(状态压缩 + dp)
- UVA 10651 Pebble Solitaire 状态压缩dp
- HDU 4057 Rescue the Rabbit ( AC自动机 + 状态压缩DP )
- HDU1074 Doing Homework 状态压缩dp
- 【poj3254】Corn Fields 状态压缩dp
- Gym - 101174E Passwords AC自动机+额外的限制条件+状态压缩dp