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|,只要知道这个概念题意就懂了. 分析:这道题与前面做的几道题有所不同,因为当前行不仅与前一行有关,而且与前两行有关,所以我们开数组的时候还要记录前两 ...
随机推荐
- pandas中loc-iloc-ix的使用
转自:https://www.jianshu.com/p/d6a9845a0a34 Pandas中loc,iloc,ix的使用 使用 iloc 从DataFrame中筛选数据 iloc 是基于“位置” ...
- bt设置指定的ip地址
auto eth0 iface eth0 inet staticaddress 192.168.1.112 IP地址netmask 255.255.255.0 子网掩码network 192.168. ...
- mac下fiddler安装配置启动及iphone配置连接
Getting started 下载安装Mono 如果没有下载则下载:https://www.mono-project.com/download/stable/#download-mac 从Mozil ...
- Java格式规范及注释的用法
/* 需求:演示一个Hello World的Java小程序 思路: 1.定义一个类.因为Java程序都是定义在类中,Java程序都是以类的形式存在的,类的形式其实就是字节码的最终体现 2.定义一个主函 ...
- Oracle的Central Inventory和Local inventory详解
很多朋友对Oracle的inventory信息不太了解以至遇到相关的问题不知道如何处理,这篇文章我们将详细讲解Oracle的Central Inventory (oraInventory)和Local ...
- Django 你需要了解的入门操作
创建一个django project (我的版本是1.11.11) django-admin startproject mysite cd mysite 当前目录下会生成mysite的工程,目录结 ...
- upload 上传按钮组件 iview
<!-- * @description 导入Excel * @fileName importExcel.vue * @author 彭成刚 * @date // :: * @version V1 ...
- node.js中使用Redis
服务端: 启动Redis服务: redis-server 客户端: 1.安装Redis npm install redis --save 2.redisTest.js文件 //引入red ...
- 安卓adb在拨号键盘上输入井号(#)
安卓系统下由于#号是属于内定字符,需要转义为%23第一种方式:adb shell service call phone 1 s16 "%23"第二种方式:adb shell am ...
- EBS oracle 批量导入更新MOQ(最小拆分量、采购提前期、最小订购量、最小包装量)
EXCEL的列:组织id,供应商编号,供应商地点,料号,最小拆分量.采购提前期.最小订购量.最小包装量 --采购导入更新MOQ四个值,若有为空的那列,会保留原来的值,不会去更新那列的值 PROCEDU ...