多组n *m

0不能放1可以放

每个士兵可以攻击到并且只能攻击到与之曼哈顿距离为2的位置以及士兵本身所在的位置。

#include<stdio.h>
#include<algorithm>
#include<string.h>
#include<math.h>
#include<map> using namespace std; #define MAXN 1<<10
int z[][];
int x[];
int dp[][][]; //dp[i][j][k] 第i行状态为num[j]第i-1行状态为num[k] 的最大士兵数目
int num[]; //合法状态
int cn[]; //对应可以放的人数目 int Count(int a)
{
int ans=;
while(a>)
{
if(a&)
ans++;
a=a>>;
}
return ans;
}
int main()
{
int n,m; while(scanf("%d%d",&n,&m)!=EOF)
{
for(int i=;i<n;i++)
for(int j=;j<m;j++)
scanf("%d",&z[i][j]);
memset(x,,sizeof(x));
memset(dp,-,sizeof(dp));
int cnt=;
int en=<<m;
for(int i=;i<en;i++)
if(((i&(i<<)))==)
{
cn[cnt]=Count(i);
num[cnt++]=i;
}
for(int i=;i<n;i++)
{
for(int j=;j<m;j++)
if(!z[i][j])
x[i]|=(<<j);
} for(int i=;i<cnt;i++) //初始化一下
{
if(x[]&num[i])
continue;
dp[][i][]=cn[i];
} for(int i=;i<n;i++) //第一行开始转移
{
for(int j=;j<cnt;j++) //这行的状态
{
if(x[i]&num[j]) //这一行和这个状态不能矛盾
continue;
for(int k=;k<cnt;k++) //上一行的状态
{
if((num[j]&(num[k]<<))||(num[j]&(num[k]>>)))//这一行状态和上一行左 右
continue;
for(int k1=;k1<cnt;k1++) //上面第二行状态
{
if(num[j]&num[k1]) //上一行和上上行
continue;
if(num[k]&(num[k1]<<))
continue;
if(num[k]&(num[k1]>>))
continue;
if(dp[i-][k][k1]==-)
continue;
dp[i][j][k]=max(dp[i][j][k],dp[i-][k][k1]+cn[j]);
}
}
}
}
int ans=;
for(int i=;i<cnt;i++)
for(int j=;j<cnt;j++)
ans=max(dp[n-][i][j],ans);
printf("%d\n",ans);
}
return ;
}

状态压缩 HDU4539 郑厂长系列故事——排兵布阵的更多相关文章

  1. HDU-4539郑厂长系列故事——排兵布阵(状态压缩,动态规划)

    郑厂长系列故事--排兵布阵 Time Limit : 10000/5000ms (Java/Other) Memory Limit : 65535/32768K (Java/Other) Total ...

  2. hdu4539 郑厂长系列故事——排兵布阵 + POJ1158 炮兵阵地

    题意:                  郑厂长系列故事--排兵布阵 Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65535/32 ...

  3. 郑厂长系列故事——排兵布阵 hdu4539(状态压缩DP)

    郑厂长系列故事——排兵布阵 Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)To ...

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

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

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

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

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

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

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

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

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

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

  9. hdu_4539_郑厂长系列故事——排兵布阵(状压DP|最大团)

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=4539 题意:中文,不解释 题解:将每一行的状态压缩,然后进行DP,也可以用最大团做.这里我用的DP # ...

随机推荐

  1. KEngine:Unity3D资源的打包、加载、调试监控

    资源模块做什么? 资源模块——ResourceModule,是KEngine中最核心的模块,其他模块基本或多或少的对它有依赖,它主要的功能是:资源打包.路径定义.资源管理.资源调试. 资源模块对Uni ...

  2. IIS7.5中神秘的ApplicationPoolIdentity

    IIS7.5中(仅win7,win2008 SP2,win2008 R2支持),应用程序池的运行帐号,除了指定为LocalService,LocalSystem,NetWorkService这三种基本 ...

  3. 嵌入式Linux驱动学习之路(九)Linux系统调用、驱动程序框架

    应用程序通过open  read  write close 等函数来操作计算机硬件.类似是一个接口. 当应用程序调用这些接口程序时,计算机是如何进入内核的呢?这是经过了系统调用. 实际上当调用接口函数 ...

  4. uva131 The Psychic Poker Player

    The Psychic Poker Player Time Limit: 3000MS     64bit IO Format: %lld & %llu Description In 5-ca ...

  5. JS获取当前页面的URL信息

    设置或获取对象指定的文件名或路径. <script> alert(window.location.pathname) </script> 设置或获取整个 URL 为字符串. & ...

  6. svn那些错误

    一.提交.a文件 第一种方法: 1. 通常选择svn的commit后一般不会上传.a文件. 2. 选中要上传的.a文件,右击选择Add Working Copy. 3. 然后再点击commit,就可以 ...

  7. sql server 修改表结构语法大全

    1.增加字段 ) 2.删除字段 alter table table_name drop column column_name 3.修改字段类型 alter table table_name alter ...

  8. VS2013使用EF6与mysql数据库

      您的项目引用了最新实体框架:但是,找不到数据链接所需的与版本兼容的实体框架数据库 EF6使用Mysql的技巧   在vs2013中使用mysql连接entityFramework经常会遇到这个问题 ...

  9. 恢复Reflector反编译后资源文件的办法

    反编译问题: 1.路径问题:如果遇到了Path.Combine,有错误改下即可 2.资源文件问题: 在Reflector下,对左边的资源管理窗口的Resources文件夹下的资源文件,进行右键点击,选 ...

  10. NFine的后台源码

    Chloe官网及基于NFine的后台源码毫无保留开放   扯淡 经过不少日夜的赶工,Chloe 的官网于上周正式上线.上篇博客中LZ说过要将官网以及后台源码都会开放出来,为了尽快兑现我说过的话,趁周末 ...