poj 1185 炮兵阵地(状态压缩DP)
2013-08-16 10:03
423 查看
当你想要让代码A掉的时候,它一直不知名的wa,那绝对是一件非常痛苦的事儿;但是当你想要代码出点儿bug的时候,它测试数据全部通过,提交之后AC,其实也蛮蛋疼的。
因为刚学状压,所以我顺着思路把这个代码写出来,想着绝对bug满天飞,然后我就在debug的过程中来理解这个算法的各种细节。结果,它A了!
然后我就只能郁郁寡欢地来写题解了。
因为刚学状压,所以我顺着思路把这个代码写出来,想着绝对bug满天飞,然后我就在debug的过程中来理解这个算法的各种细节。结果,它A了!
然后我就只能郁郁寡欢地来写题解了。
#include<stdio.h> #include<string.h> #define N 12 int dp[105][65][65],st[65],mark[105] ,flag[105],num[1<<N]; int m,n,ss; int fun(int x) { int k; k=0; while(x) { if(x&1) k++; x>>=1; } return k; } int Max(int x,int y) { if(x>y) return x; return y; } void Init() { int tt,i,j; j=0;tt=1<<n; for(i=0;i<tt;i++) { if(!(i&i<<1)&&!(i&i<<2)) st[j++]=i; } ss=j; for(i=1;i<=m;i++) { flag[i]=0; for(j=1;j<=n;j++) flag[i]=(flag[i]<<1)+mark[i][j]; } for(i=0;i<ss;i++) num[i]=fun(st[i]); return ; } int judge(int x,int y) { if((x&flag[y])==x) return 0; return 1; } void Output() { int i,j,k,l; memset(dp,-1,sizeof(dp)); for(i=0;i<ss;i++) { if(judge(st[i],1)) continue; for(j=0;j<ss;j++) dp[1][j][i]=num[i]; } for(i=2;i<=m;i++) { for(j=0;j<ss;j++) { if(judge(st[j],i)) continue; for(k=0;k<ss;k++) { if(st[j]&st[k]) continue; for(l=0;l<ss;l++) { if(st[j]&st[l]) continue; if(dp[i-1][l][k]==-1) continue; dp[i][k][j]=Max(dp[i][k][j],dp[i-1][l][k]+num[j]); } } } } int max=0; for(i=1;i<=m;i++) { for(j=0;j<ss;j++) for(k=0;k<ss;k++) max=Max(dp[i][j][k],max); } printf("%d\n",max); return ; } int main() { while(scanf("%d%d",&m,&n)!=EOF) { getchar(); int i,j; for(i=1;i<=m;i++) { for(j=1;j<=n;j++) { char c; scanf("%c",&c); if(c=='P') mark[i][j]=1; else mark[i][j]=0; } getchar(); } Init(); Output(); } return 0; }
相关文章推荐
- POJ 1185 炮兵阵地(状态压缩DP)
- POJ 1185 炮兵阵地 (状态压缩,DP,附测试数据)
- POJ1185——炮兵阵地(状态压缩dp)
- POJ 1185 炮兵阵地 状态压缩DP
- Poj 1185 炮兵阵地(状态压缩dp 入门题)
- poj 1185 炮兵阵地(三维状态压缩dP)
- poj 1185 炮兵阵地 (状态压缩DP)
- POJ 1185 炮兵阵地 状态压缩DP简单题
- poj 1185 炮兵阵地 状态压缩dp
- poj 1185 炮兵阵地 状态压缩DP
- POJ 1185 炮兵阵地(状态压缩DP)
- poj 1185 炮兵阵地 状态压缩dp
- POJ 1185 炮兵阵地 ( dp[状态压缩] )
- POJ 1185炮兵阵地(状态压缩dp)
- poj 1185 炮兵阵地 【状态压缩dp】
- poj 1185 状态压缩dp(炮兵阵地)
- POJ1185炮兵阵地(DP状态压缩)
- POJ 1185 炮兵阵地(状态压缩DP)
- POJ1185炮兵阵地(状态压缩DP)
- poj 1185 状态压缩dp-炮兵阵地