用二维数组写了好久,失败啊。。

  1. #include<iostream>
  2. #include<string.h>
  3. #include<cstdio>
  4. #include<algorithm>
  5. using namespace std;
  6. int n,m;
  7. int dp[110][110][110];
  8. char st[110][12];
  9. int s[110],an[110],as[110];
  10. int convert(int n)
  11. {
  12. int cnt=0;
  13. while(n>0)
  14. {
  15. if(n%2)cnt++;
  16. n/=2;
  17. }
  18. return cnt;
  19. }
  20. int main()
  21. {
  22. int cnt=0;
  23. memset(s,0,sizeof(s));
  24. for(int i=0;i<=(1<<10);i++)
  25. {
  26. if(!(i&(i<<1)))
  27. if(!(i&(i<<2)))
  28. {as[cnt]=i;s[cnt]=convert(i);cnt++;}
  29.  
  30. }
  31. while(cin>>n>>m)
  32. {
  33. int nallstatus=2<<(m-1);
  34. memset(dp,-1,sizeof(dp));
  35. memset(st,'\0',sizeof(st));
  36. memset(an,0,sizeof(an));
  37. for(int i=0; i<n; i++)
  38. scanf("%s",st[i]);
  39. for(int i=0;i<n;i++)
  40. for(int j=0;j<m;j++)
  41. if(st[i][j]=='H')
  42. an[i]|=(1<<j);
  43. for(int j=0; as[j]<nallstatus; j++)
  44. {
  45. if(!(as[j]&an[0]))
  46. {dp[0][0][j]=s[j];
  47. }
  48. }
  49. for(int i=1;i<n;i++)
  50. for(int j=0;as[j]<nallstatus;j++)
  51. for(int k=0;as[k]<nallstatus;k++)
  52. for(int l=0;as[l]<nallstatus;l++)
  53. {
  54. int state=1;
  55. if(as[j]&an[i]) state=0;
  56. if(as[j]&as[k]) state=0;
  57. if(as[j]&as[l]) state=0;
  58. if(as[k]&as[l]) state=0;
  59. if(as[k]&an[i-1]) state=0;
  60. if(as[l]&an[i-2]) state=0;
  61. if(state)
  62. {
  63. dp[i][k][j]=max(dp[i][k][j],dp[i-1][l][k]+s[j]);
  64. /*if(i==3&&as[j]==4)
  65. {
  66. cout<<s[k]<<s[j]<<dp[i-2][as[l]]<<dp[i][as[j]]<<endl;
  67. cout<<as[k]<<as[l]<<endl;
  68. }*/
  69. }
  70. }
  71. /*for(int i=0;i<n;i++)
  72. {
  73. for(int j=0;as[j]<nallstatus;j++)
  74. cout<<dp[i][as[j]];
  75. cout<<endl;
  76. }*/
  77. /*for(int i=0;as[i]<nallstatus;i++)
  78. cout<<dp[0][as[i]]<<as[i]<<endl;*/
  79. int cur=0;
  80. for(int i=0;as[i]<nallstatus;i++)
  81. for (int j=0;as[j]<nallstatus;j++)
  82. cur=max(cur,dp[n-1][i][j]);
  83. cout<<cur<<endl;
  84. }
  85. return 0;
  86. }

poj_1185状压dp的更多相关文章

  1. BZOJ 1087: [SCOI2005]互不侵犯King [状压DP]

    1087: [SCOI2005]互不侵犯King Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 3336  Solved: 1936[Submit][ ...

  2. nefu1109 游戏争霸赛(状压dp)

    题目链接:http://acm.nefu.edu.cn/JudgeOnline/problemShow.php?problem_id=1109 //我们校赛的一个题,状压dp,还在的人用1表示,被淘汰 ...

  3. poj3311 TSP经典状压dp(Traveling Saleman Problem)

    题目链接:http://poj.org/problem?id=3311 题意:一个人到一些地方送披萨,要求找到一条路径能够遍历每一个城市后返回出发点,并且路径距离最短.最后输出最短距离即可.注意:每一 ...

  4. [NOIP2016]愤怒的小鸟 D2 T3 状压DP

    [NOIP2016]愤怒的小鸟 D2 T3 Description Kiana最近沉迷于一款神奇的游戏无法自拔. 简单来说,这款游戏是在一个平面上进行的. 有一架弹弓位于(0,0)处,每次Kiana可 ...

  5. 【BZOJ2073】[POI2004]PRZ 状压DP

    [BZOJ2073][POI2004]PRZ Description 一只队伍在爬山时碰到了雪崩,他们在逃跑时遇到了一座桥,他们要尽快的过桥. 桥已经很旧了, 所以它不能承受太重的东西. 任何时候队伍 ...

  6. bzoj3380: [Usaco2004 Open]Cave Cows 1 洞穴里的牛之一(spfa+状压DP)

    数据最多14个有宝藏的地方,所以可以想到用状压dp 可以先预处理出每个i到j的路径中最小权值的最大值dis[i][j] 本来想用Floyd写,无奈太弱调不出来..后来改用spfa 然后进行dp,这基本 ...

  7. HDU 1074 Doing Homework (状压dp)

    题意:给你N(<=15)个作业,每个作业有最晚提交时间与需要做的时间,每次只能做一个作业,每个作业超出最晚提交时间一天扣一分 求出扣的最小分数,并输出做作业的顺序.如果有多个最小分数一样的话,则 ...

  8. 【BZOJ1688】[Usaco2005 Open]Disease Manangement 疾病管理 状压DP

    [BZOJ1688][Usaco2005 Open]Disease Manangement 疾病管理 Description Alas! A set of D (1 <= D <= 15) ...

  9. 【BZOJ1725】[Usaco2006 Nov]Corn Fields牧场的安排 状压DP

    [BZOJ1725][Usaco2006 Nov]Corn Fields牧场的安排 Description Farmer John新买了一块长方形的牧场,这块牧场被划分成M列N行(1<=M< ...

随机推荐

  1. Linux多线程实践(一)线程基本概念和理论

    线程概念 在一个程序里的一个运行路线就叫做线程(thread).更准确的定义是:线程是"一个进程内部的控制序列/指令序列"; 对于每一个进程至少有一个运行线程; 进程  VS. 线 ...

  2. Java学习之道:Java 导出EXCEL

    1.Apache POI简单介绍  Apache POI是Apache软件基金会的开放源代码函式库.POI提供API给Java程式对Microsoft Office格式档案读和写的功能. .NET的开 ...

  3. Linux 系列- 基本命令

    Linux 基本命令 转自:http://www.taobaotest.com/blogs/qa?bid=353 Linux是一个基于命令的系统,它有很多很强的命令. 但它也有桌面系统,比如KDE, ...

  4. Fragment间相互调用并传值

    public class MainFragment extends Fragment { private static final String ARG_DATE="com.example. ...

  5. JS进阶 - 浏览器工作原理

    一.浏览器的结构 浏览器的主要组件为: 用户界面 - 包括地址栏.前进/后退按钮.书签菜单等.除了浏览器主窗口(显示页面),其他部分都属于用户界面. 浏览器引擎 - 在用户界面和渲染引擎之间传送指令. ...

  6. CSS实现栅格布局

    CSS实现栅格布局 设置容器container: .grid-container { width: 100%; max-width: 1200px; } 清除浮动: .row:before, .row ...

  7. 洛谷P4012 深海机器人问题(费用流)

    题目描述 深海资源考察探险队的潜艇将到达深海的海底进行科学考察. 潜艇内有多个深海机器人.潜艇到达深海海底后,深海机器人将离开潜艇向预定目标移动. 深海机器人在移动中还必须沿途采集海底生物标本.沿途生 ...

  8. ZBrush中关于标记的特殊情况

    在ZBrush®中使用Marker标记调控板来记忆物体属性,因此能在任何时间回到标记并使用它给其他物体或改变物体作为参考点,在使用Marker标记调控板时回出现很多特殊情况,本文小编就这些特殊情况做一 ...

  9. LeetCode Golang 7. 整数反转

    7. 整数反转 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转. Tips : Math包给出的类型大小的边界: // Integer limit values. const ...

  10. 【Django】遇到的问题

    目前的Django版本是Django version 2.0.4 Python使用的版本是Python 3.6.4 以下会将遇到的问题和各种报错信息记录 报错信息:NameError: name 'u ...