1. #include<stdio.h>
  2. #include<string.h>
  3. int dp[2][202][202];
  4. int s[202],c[202],origmap[202];
  5. int main() {
  6. int i,j,n,m;
  7. int ch;
  8. while(scanf("%d%d",&n,&m)!=EOF) {
  9. memset(origmap,0,sizeof(origmap));
  10. memset(s,0,sizeof(s));
  11. memset(c,0,sizeof(c));
  12. for(i=0;i<n;i++) {
  13. getchar();
  14. for(j=0;j<m;j++) {
  15. scanf("%d",&ch);
  16. if(ch==0)
  17. origmap[i]+=(1<<j);
  18. }
  19. }
  20. int num=0;
  21. for(i=0;i<(1<<m);i++) {
  22. int t=i;
  23. if(i&(i<<2))
  24. continue;
  25. c[num]=t%2;
  26. while(t=(t>>1))
  27. c[num]+=t%2;
  28. s[num++]=i;
  29. }
  30. memset(dp,-1,sizeof(dp));
  31. int roll=0;
  32. for(i=0;i<n;i++) {
  33. for(j=0;j<num;j++) {
  34. if(s[j]&origmap[i])
  35. continue;
  36. if(i==0)
  37. dp[roll][j][0]=c[j];
  38. else {
  39. for(int k=0;k<num;k++) {
  40. if((s[j]&(s[k]<<1))||(s[j]&(s[k]>>1)))
  41. continue;
  42. for(int l=0;l<num;l++) {
  43. if(s[j]&s[l])
  44. continue;
  45. if(s[k]&(s[l]<<1))
  46. continue;
  47. if(s[k]&(s[l]>>1))
  48. continue;
  49. if(dp[(roll+1)%2][k][l]==-1)
  50. continue;
  51. if(dp[roll][j][k]<dp[(roll+1)%2][k][l]+c[j])
  52. dp[roll][j][k]=dp[(roll+1)%2][k][l]+c[j];
  53. }
  54. }
  55. }
  56. }
  57. roll=(roll+1)%2;
  58. }
  59. int max=0;
  60. roll=(roll+1)%2;
  61. for(i=0;i<num;i++)
  62. for(j=0;j<num;j++)
  63. if(max<dp[roll][i][j])
  64. max=dp[roll][i][j];
  65. printf("%d\n",max);
  66. }
  67. return 0;
  68. }

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. Retrofit Upload multiple files and parameters

    Retrofit 的介绍以及基本使用 这里不再说明. 关于多文件上传 以及上传文件的同时携带多个参数说明 网上涉及到的不是太多. 上一张帅图: 代码: apiService: /** params 参 ...

  2. 第一个 swift 项目

    今天 学习了 一丢丢 swift,特此记录一下 ! 原来创建的时候 ,只要把 语言 由以前的Object-C改为Swift,变创建好了自己的swift工程 第一个简单的swift demo 上代码 i ...

  3. java设计模式之单例设计模式

    单例设计模式 保证一个类在使用过程中,只有一个实例.优势就是他的作用,这个类永远只有一个实例. 优势:这个类永远只有一个实例,占用内存少,有利于Java垃圾回收. 单例设计模式关键点 私有的构造方法. ...

  4. 解决IDEA Tomcat控制台乱码问题

    1.在Tomcat Server的配置中添加一句命令: 神秘代码: -Dfile.encoding=UTF-8 重启Tomcat,ok. 如果还不行,则需要: 1.在Settings中修改文件编码 2 ...

  5. Dynamic Median

    题意: 设计一个数据结构,初始为空,支持以下操作: (1)增加一个元素,要求在log(n)时间内完成,其中n是该数据结构中当前元素的个数.注意:数据结构中允许有重复的元素. (2)返回当前元素集合的中 ...

  6. web前端怎么样才能入门

    web前端怎么样才能入门,首先我们要从什么是初级web前端工程师说起: 按照我的想法,我把前端工程师分为了入门.初级.中级.高级这四个级别: 入门级别指的是了解什么是前端(前端到底是什么其实很多人还是 ...

  7. Java入门小知识

    软件开发什么是软件?  一系列按照特定顺序组织的计算机数据和指令的集合什么是开发?  制作软件 人机交互  软件的出现实现了人与计算机之间的更好的交互交互方式   图形化界面:这种方式简单直观,使用者 ...

  8. Mac Outlook 15 连接office365 一直跳出登录框的问题

    解决: 比如 原登录用户名密码为 abc@xxx.com 密码:***** 改一下outlook帐号中的登录用户名为:xxx.com\abc   密码为原来密码,尝试连接,连接状态会连上,但过会儿又提 ...

  9. codevs 2046 孪生素数 3 (水题日常)

    时间限制: 1 s  空间限制: 32000 KB  题目等级 : 黄金 Gold 题目描述 Description 在质数的大家庭中,大小之差不超过2的两个质数称它俩为一对孪生素数,如2和3.3和5 ...

  10. js生成随机的uuid

    function generateUUID() { var d = new Date().getTime(); if(window.performance && typeof wind ...