poj 1185 动态规划
来源:互联网 发布:中国网络房产经纪人 编辑:程序博客网 时间:2024/06/08 00:03
炮兵阵地 动态规划
这个题本应该是上个暑假之前就应该做的,但是当时一个有点懒,不想做,第二这难度也不小,至少对于我来说!一个很好的佐证是今天我花了整整一天的时间才搞定这道题!当然我有我不想完全照抄别人代码的想法,于是就想到了简化,就这简化要命啊!最后在折腾没气之后终于搞定了,吸取的一个教训是:位运算不可乱用,不然死也不知道到底错哪里!
我参考的代码是:滩涂曳尾 详解版
<pre name="code" class="cpp">#include<cstdio>#include<cstring>#include<algorithm>using namespace std;#define fi(i,n) for(int i = 0; i < n; i ++)#define MAX(a,b) ((a) > (b) ? (a) : (b))int dp[105][65][65], sum[105], map[105], state[65], cnt, n, m;bool ok(int x){ if(x & (x << 1)) return false; if(x & (x << 2)) return false; return true;}int getSum(int x){ int num = 0; while(x) { if(x&1) num ++; x >>= 1; } return num;}void find(){ memset(state, 0, sizeof(state)); cnt = 0; fi(i,(1<<m)) if(ok(i)) { state[cnt] = i; sum[cnt++] = getSum(i); }}int main(){ while(~scanf("%d%d", &n, &m)) { memset(dp, -1, sizeof(dp)); memset(map, 0 , sizeof(map)); char s[12]; fi(i,n) { scanf("%s", s); for(int j = 0; j < m; j ++) if(s[j] == 'H') map[i] |= 1 << j; } find(); fi(i,cnt) if(!(map[0] & state[i])) dp[0][i][0] = sum[i]; for(int r = 1; r < n; r ++) fi(i,cnt) { if(map[r] & state[i]) continue; fi(j, cnt) { if(state[i] & state[j]) continue; fi(k,cnt) { if(state[i] & state[k] || state[j] & state[k] || dp[r-1][j][k] == -1) continue; dp[r][i][j] = MAX(dp[r][i][j], dp[r-1][j][k] + sum[i]); } } } int ans = 0; fi(i,cnt) fi(j,cnt) ans = MAX(ans, dp[n-1][i][j]); printf("%d\n", ans); } return 0;}
0 0
- poj 1185 动态规划
- POJ 1185 炮兵阵地(动态规划)
- POJ 1185 炮兵布阵 (动态规划)
- poj 2411 动态规划
- Poj 1157(动态规划)
- POJ 1651动态规划
- Poj 1221 动态规划
- POJ 3186 动态规划
- [poj]动态规划2479
- [poj]动态规划1015
- [poj] 动态规划 1141
- POJ 1088 动态规划
- poj 1636 动态规划
- poj 1159 动态规划
- POJ 动态规划 题集
- poj 1088 动态规划
- POJ 3267 动态规划
- poj 2609 动态规划
- poj 3204 Ikki's Story I - Road Reconstruction 最大流
- 搭建Zend开发环境
- android ScrollView嵌套ListView自动滑动到底部,嵌套ViewPager出现的滑动冲突以及监听滑动停止
- 基于分区表的物化视图快速刷新以及维护
- html5练习2
- poj 1185 动态规划
- Java-Log4j日志使用方法
- ios中NSArray,NSSet,NSDictionary总结
- Android笔记---- Android开发简介
- 基于MTK 的 TP 驱动分析
- 在myeclipse中导入mysql-connector-java-bin.jar问题
- 利用openssl来计算sha256哈希值
- 课堂小结
- delphi7 添加synedit