poj1185炮兵阵地(状态压缩DP)
来源:互联网 发布:js object比较 编辑:程序博客网 时间:2024/06/06 05:09
状态压缩就是利用各种进制(基本是二进制)来保存一个状态,在这种图中应用起来也很方便,这道题我觉得有点烦,看了这位大神的详细讲解之后,才算明白地比较彻底,明白之后觉得这道题只是有一点复杂,思路还是很清晰的
代码在这:
#include <bits/stdc++.h>#define max(a,b) a>b?a:b#define cl(a) memset(a,0,sizeof(a))#define q(a,b) a&busing namespace std;int row,col;int num,x;int base[110];int state[110];int soldier[110];int dp[110][110][110];char g[110][20];int main(){ num=0; scanf("%d%d",&row,&col); for(int i=0;i<row;++i) { scanf("%s",g[i]); for(int j=0;j<col;++j) if(g[i][j]=='H') base[i]+=1<<j; } for(int i=0;i<(1<<col);++i) { if(q(i,i<<1)||q(1,1<<2)) continue; x=i; while(x>0) { soldier[num]+=x&1; x=x>>1; } state[num++]=i; } for(int i=0;i<num;++i) //第一行状态初始化 { if(q(state[i],base[0])) continue; dp[0][i][0]=soldier[i]; } for(int i=0;i<num;++i) { if(q(state[i],base[1])) continue; //第二行状态初始化 { for(int j=0;j<num;++j) { if(q(state[j],base[0])) continue; if(q(state[i],state[j])) continue; dp[1][i][j]=max(dp[1][i][j],dp[0][j][0]+soldier[i]); } } } for(int r=2;r<row;++r) { for(int i=0;i<num;++i) { if(q(state[i],base[r])) continue; for(int j=0;j<num;++j) { if(q(state[j],base[r-1])) continue; if(q(state[i],state[j])) continue; for(int k=0;k<num;++k) { if(q(state[k],base[r-2])) continue; if(q(state[k],state[j])) continue; if(q(state[k],state[i])) continue; dp[r][i][j]=max(dp[r][i][j],dp[r-1][j][k]+soldier[i]); } } } } int ans=0; for(int i=0;i<num;++i) for(int j=0;j<num;++j) ans=max(ans,dp[row-1][i][j]); printf("%d\n",ans); return 0;}
0 0
- 状态压缩DP poj1185 炮兵阵地
- poj1185 炮兵阵地 状态压缩dp
- poj1185 炮兵阵地 (DP状态压缩)
- poj1185 炮兵阵地 状态压缩dp
- poj1185 炮兵阵地(状态压缩+DP)
- POJ1185 炮兵阵地 (状态压缩DP)
- poj1185 炮兵阵地(状态压缩dp)
- poj1185 炮兵阵地(状态压缩dp)
- poj1185炮兵阵地(状态压缩dp)
- POJ1185 炮兵阵地 (状态压缩DP)
- POJ1185炮兵阵地(状态压缩DP)
- poj1185炮兵阵地(状态压缩DP)
- POJ1185 炮兵阵地 状态压缩DP
- POJ1185:炮兵阵地(状态压缩)
- [状态压缩]poj1185 炮兵阵地
- POJ1185 炮兵阵地 状态DP
- POJ1185——炮兵阵地(状态压缩DP)
- poj1185炮兵阵地 dp+状态压缩 经典题目
- 记一个合并代码导致的错误(自定义控件路径改变引起找不到类)
- 小米Git问题-学习笔记
- [LeetCode]--114. Flatten Binary Tree to Linked List
- POJ 3162 Walking Race 树的直径+单调队列(其实暴力也可以>_<)
- mysql rollback与AI
- poj1185炮兵阵地(状态压缩DP)
- Android 6.0以下检测摄像头权限
- 压缩感知重构算法之迭代硬阈值(Iterative Hard Thresholding,IHT)
- C++系列——const,引用,指针用法小结
- Cocos Creator 使用计时器(摘自官方文档)
- 打包jar包
- CALayer创建图层和遮挡层应用
- Windows下CMD重置Mysql数据库的root密码
- STM32CubeMX:PWM