#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的更多相关文章

  1. HDU 4539郑厂长系列故事――排兵布阵(状压DP)

    HDU 4539  郑厂长系列故事――排兵布阵 基础的状压DP,首先记录先每一行可取的所哟状态(一行里互不冲突的大概160个状态), 直接套了一个4重循环居然没超时我就呵呵了 //#pragma co ...

  2. HDU 4539 郑厂长系列故事——排兵布阵

    http://acm.hdu.edu.cn/showproblem.php?pid=4539 郑厂长系列故事——排兵布阵 Time Limit: 10000/5000 MS (Java/Others) ...

  3. Hdu 4539 【状态DP】.cpp

    题意: 一个炮兵可以攻打和他之间曼哈顿距离为2的士兵,给出你一块n*m的战场,告诉你哪些地方可以站人哪些地方不可以,问你最多可以安放多少个士兵? n <= 100, m <= 10 思路: ...

  4. POJ 1185 - 炮兵阵地 & HDU 4539 - 郑厂长系列故事——排兵布阵 - [状压DP]

    印象中这道题好像我曾经肝过,但是没肝出来,现在肝出来了也挺开心的 题目链接:http://poj.org/problem?id=1185 Time Limit: 2000MS Memory Limit ...

  5. HDU 4539 郑厂长系列故事——排兵布阵 状压dp

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4539 郑厂长系列故事--排兵布阵 Time Limit: 10000/5000 MS (Java/O ...

  6. hdu 4539(状压dp)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4539 思路:跟poj1185简直就是如出一辙! #include<iostream> #i ...

  7. HDU 4539 郑厂长系列故事——排兵布阵 —— 状压DP

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4539 郑厂长系列故事——排兵布阵 Time Limit: 10000/5000 MS (Java/Ot ...

  8. HDU 4539 郑厂长系列故事――排兵布阵(曼哈顿距离)

    这虽然是中文题,然而没看懂,不懂的地方,就是在曼哈顿距离这块,网上搜索了一下,写了个程序,是测试曼哈顿距离的. 曼哈顿距离:两点(x1,y1)(x2,y2)的曼哈顿距离为|x1-x2|+|y1-y2| ...

  9. hdu 4539(状态压缩dp)

    题意:曼哈顿距离是指:|x1-x2|+|y1-y2|,只要知道这个概念题意就懂了. 分析:这道题与前面做的几道题有所不同,因为当前行不仅与前一行有关,而且与前两行有关,所以我们开数组的时候还要记录前两 ...

随机推荐

  1. qconshanghai2014

    主题演讲 容器化的云——CohesiveFT首席技术官 Chris Swan 建设强大的工程师文化——Spotify工程总监 Kevin Goldsmith 软件项目变更的管理和生存之道——jClar ...

  2. Ionic开发-如何在ion-content形成上下结构 上面固定下层可滚动

    在一个系统设计中,一般有些需要固定位置,便利操作.现在我要做一个上下两层,需要固定上方,下方拉刷新数据. 页面: <ion-content scroll="false"> ...

  3. springboot之读取配置文件

    1.propertie配置读取数据 /** * 通过value取配置文件中的数据 */ @Component @PropertySource(value = {"config/db-conf ...

  4. Centos5安装***

    最近shadowsocks挺火,看了几张帖子,感觉在手机上应该挺好用,电脑都是挂着ssh,用不到***了,下面贴出服务器安装过程: yum install build-essential autoco ...

  5. DROP AGGREGATE - 删除一个用户定义的聚集函数

    SYNOPSIS DROP AGGREGATE name ( type ) [ CASCADE | RESTRICT ] DESCRIPTION 描述 DROP AGGREGATE 将删除一个现存聚集 ...

  6. core mvc 分页

    看了下XPAGE感觉还是用的不太爽,自己写了个,样式是bootstrap的,需要的小伙伴拿走吧. public static IHtmlContent Pager(this IHtmlHelper h ...

  7. 【整理】解决vue不相关组件之间的数据传递----vuex的学习笔记,解决报错this.$store.commit is not a function

    解决vue不相关组件之间的数据传递----vuex的学习笔记,解决报错this.$store.commit is not a function https://www.cnblogs.com/jaso ...

  8. 二叉排序树BST

    注意:对一个二叉排序树进行中序遍历时,得到的序列是一个按值从小到大排列的有序序列 查找性能的分析:

  9. 树状数组 || POJ 2352 Stars

    Astronomers often examine star maps where stars are represented by points on a plane and each star h ...

  10. 基于纯注解的spring开发的介绍

    几个核心注解的介绍1.@Configuration它的作用是:将一个java类修饰为==配置文件==,在这个java类进行组件注册1package com.kkb.config; import org ...