hdu 4539
#include<stdio.h>
#include<string.h>
int dp[2][202][202];
int s[202],c[202],origmap[202];
int main() {
int i,j,n,m;
int ch;
while(scanf("%d%d",&n,&m)!=EOF) {
memset(origmap,0,sizeof(origmap));
memset(s,0,sizeof(s));
memset(c,0,sizeof(c));
for(i=0;i<n;i++) {
getchar();
for(j=0;j<m;j++) {
scanf("%d",&ch);
if(ch==0)
origmap[i]+=(1<<j);
}
}
int num=0;
for(i=0;i<(1<<m);i++) {
int t=i;
if(i&(i<<2))
continue;
c[num]=t%2;
while(t=(t>>1))
c[num]+=t%2;
s[num++]=i;
}
memset(dp,-1,sizeof(dp));
int roll=0;
for(i=0;i<n;i++) {
for(j=0;j<num;j++) {
if(s[j]&origmap[i])
continue;
if(i==0)
dp[roll][j][0]=c[j];
else {
for(int k=0;k<num;k++) {
if((s[j]&(s[k]<<1))||(s[j]&(s[k]>>1)))
continue;
for(int l=0;l<num;l++) {
if(s[j]&s[l])
continue;
if(s[k]&(s[l]<<1))
continue;
if(s[k]&(s[l]>>1))
continue;
if(dp[(roll+1)%2][k][l]==-1)
continue;
if(dp[roll][j][k]<dp[(roll+1)%2][k][l]+c[j])
dp[roll][j][k]=dp[(roll+1)%2][k][l]+c[j];
}
}
}
}
roll=(roll+1)%2;
}
int max=0;
roll=(roll+1)%2;
for(i=0;i<num;i++)
for(j=0;j<num;j++)
if(max<dp[roll][i][j])
max=dp[roll][i][j];
printf("%d\n",max);
}
return 0;
}
hdu 4539的更多相关文章
- HDU 4539郑厂长系列故事――排兵布阵(状压DP)
HDU 4539 郑厂长系列故事――排兵布阵 基础的状压DP,首先记录先每一行可取的所哟状态(一行里互不冲突的大概160个状态), 直接套了一个4重循环居然没超时我就呵呵了 //#pragma co ...
- HDU 4539 郑厂长系列故事——排兵布阵
http://acm.hdu.edu.cn/showproblem.php?pid=4539 郑厂长系列故事——排兵布阵 Time Limit: 10000/5000 MS (Java/Others) ...
- Hdu 4539 【状态DP】.cpp
题意: 一个炮兵可以攻打和他之间曼哈顿距离为2的士兵,给出你一块n*m的战场,告诉你哪些地方可以站人哪些地方不可以,问你最多可以安放多少个士兵? n <= 100, m <= 10 思路: ...
- POJ 1185 - 炮兵阵地 & HDU 4539 - 郑厂长系列故事——排兵布阵 - [状压DP]
印象中这道题好像我曾经肝过,但是没肝出来,现在肝出来了也挺开心的 题目链接:http://poj.org/problem?id=1185 Time Limit: 2000MS Memory Limit ...
- HDU 4539 郑厂长系列故事——排兵布阵 状压dp
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4539 郑厂长系列故事--排兵布阵 Time Limit: 10000/5000 MS (Java/O ...
- hdu 4539(状压dp)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4539 思路:跟poj1185简直就是如出一辙! #include<iostream> #i ...
- HDU 4539 郑厂长系列故事——排兵布阵 —— 状压DP
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4539 郑厂长系列故事——排兵布阵 Time Limit: 10000/5000 MS (Java/Ot ...
- HDU 4539 郑厂长系列故事――排兵布阵(曼哈顿距离)
这虽然是中文题,然而没看懂,不懂的地方,就是在曼哈顿距离这块,网上搜索了一下,写了个程序,是测试曼哈顿距离的. 曼哈顿距离:两点(x1,y1)(x2,y2)的曼哈顿距离为|x1-x2|+|y1-y2| ...
- hdu 4539(状态压缩dp)
题意:曼哈顿距离是指:|x1-x2|+|y1-y2|,只要知道这个概念题意就懂了. 分析:这道题与前面做的几道题有所不同,因为当前行不仅与前一行有关,而且与前两行有关,所以我们开数组的时候还要记录前两 ...
随机推荐
- Python实现决策树C4.5算法
为什么要改进成C4.5算法 原理 C4.5算法是在ID3算法上的一种改进,它与ID3算法最大的区别就是特征选择上有所不同,一个是基于信息增益比,一个是基于信息增益. 之所以这样做是因为信息增益倾向于选 ...
- ASP.NET MVC5的一个轻量级的框架学习的第一天
第二步第三部 这是第一天的小试成功,怪自己太笨了,一个错排查好久,还好有源码看着了解,后续还得多努力,
- AJPFX总结java开发常用类(包装,数字处理集合等)(三)
4.Map是一种把键对象和值对象进行关联的容器,而一个值对象又可以是一个Map,依次类推,这样就可形成一个多级映射.对于键对象来说,像Set一样,一 个Map容器中的键对象不允许重复,这是为了保持查找 ...
- pageHelper分页插件失效问题
在bootstrap中引用pageHelper进行页面分页<dependency><groupId>com.github.pagehelper</groupId>& ...
- RxJava的map方法与flatMap方法
简单讲,map和flatMap都是来完成Observable构造的数据到Observer接收数据的一个转换,这么说有点绕
- centos设置系统时间
系统日期设定成1996年6月10日上午9点date -s 06/22/96date -s 09:00:00
- Android系统级技巧合集
Android系统级技巧合集(随时更新) #转载请注明来源# 1.高通骁龙系列查看CPU体质等级 CPU体质,即为CPU在工作频率下的电压.同一批次的CPU体质各有不同,体质越高,代表该颗CPU可在更 ...
- MFC隐藏在黑暗之中的大坑
大坑一:CDC会随着窗口状态的改变而改变 void K5::OnPaint() { CDC *pDC=this->GetDC(); //CDC最好设为局部变量 ... this->Rele ...
- BZOJ3940: [Usaco2015 Feb]Censoring (AC自动机)
题意:在文本串上删除一些字符串 每次优先删除从左边开始第一个满足的 删除后剩下的串连在一起重复删除步骤 直到不能删 题解:建fail 用栈存当前放进了那些字符 如果可以删 fail指针跳到前面去 好菜 ...
- Warning: date(): It is not safe to rely on the system's timezone settings. You are *required* to use ...报错
错误截图 Warning: date(): It is not safe to rely on the system's timezone settings. You are *required* t ...