辣鸡题卡常,改了以后又zz地把数组开成了100,debug到死都没有发现。一题做了一天多,沃日。

代码:

#include <bits/stdc++.h>
using namespace std;
const int INF=0x3f3f3f3f;
int m, n;
char str[10];
int g[80];
int dp[2][200][200];
int tofix1, tofix2;
void dfs(int line, int flor, int tar1, int tar2, int cnt)
{if(flor>1&&!(tofix2&(1<<(flor-2)))&&!(tar2&(1<<(flor-2)))){/*printf("sb1 %d %d %d\n",line, tar2, tofix2);*/return;}if(flor>2&&!(tar2&(1<<(flor-2)))&&!(tar2&(1<<(flor-3)))){/*printf("sb2 %d %d\n", line, tar2);*/return;}if(flor==n+1){//printf("%d %d %d\n", tar1, tar2, line);dp[line%2][tar1][tar2]=min(dp[line%2][tar1][tar2], dp[(line+1)%2][tofix1][tofix2]+cnt);//printf("%d %d %d\n", cnt, dp[line%2][tar1][tar2], dp[(line+1)%2][tofix1][tofix2]);return;}dfs(line, flor+1, tar1, tar2, cnt);if(flor<n&&!(tar1&(1<<(flor-1)))&&!(tar1&(1<<(flor))))dfs(line, flor+1, tar1|(1<<(flor-1))|(1<<flor), tar2, cnt+1);if(!(tar1&(1<<(flor-1)))&&!(tar2&(1<<(flor-1))))dfs(line, flor+1, tar1|(1<<(flor-1)), tar2|(1<<(flor-1)), cnt+1);
}
int main()
{memset(dp, 0x3f3f3f3f, sizeof(dp));scanf("%d%d", &m, &n);for(int i=1;i<=m;i++){g[i]=0;scanf("%s", str);for(int j=0;j<n;j++){g[i]<<=1;g[i]|=(str[j]=='*');}//printf("%d\n", g[i]);}g[m+1]=(1<<n)-1;dp[0][(1<<n)-1][(1<<n)-1]=0;for(int i=1;i<=m+1;i++){for(int j=0;j<(1<<n);j++)for(int k=0;k<(1<<n);k++){if(dp[(i+1)%2][j][k]!=INF){tofix1=j;tofix2=k;//printf("%d %d %d\n", i, j, k);dfs(i, 1, g[i], j, 0);}}memset(dp[(i+1)%2], 0x3f3f3f3f, sizeof(dp[(i+1)%2]));}int M=INF;for(int j=0;j<(1<<n);j++)M=min(M, dp[(m+1)%2][(1<<n)-1][j]);printf("%d\n", M);
}

Sgu 132 状压dp(gtmd128)相关推荐

  1. [SGU223]Little Kings(状压DP)

    题目链接:http://acm.sgu.ru/problem.php?contest=0&problem=223 题意:n*n个格子里放k个王(走相邻8个格子),问不互相碰到的放法一共多少个. ...

  2. NOJ 1116 哈罗哈的大披萨 【淡蓝】 [状压dp+各种优化]

    我只能说,珍爱生命,远离卡常数的题...感谢陈老师和蔡神,没有他们,,,我调一个星期都弄不出来,,,, 哈罗哈的大披萨 [淡蓝] 时间限制(普通/Java) : 1000 MS/ 3000 MS   ...

  3. ACM-ICPC 2018 南京赛区网络预赛 E. AC Challenge 状压dp

    Dlsj is competing in a contest with n(0<n≤20)n (0 < n \le 20)n(0<n≤20) problems. And he kno ...

  4. POJ 1038 Bugs Integrated Inc (复杂的状压DP)

    \(POJ~1038~~*Bugs~Integrated~Inc:\) (复杂的状压DP) \(solution:\) 很纠结的一道题目,写了大半天,就想练练手,结果这手生的.其实根据之前那道炮兵阵地 ...

  5. codeforces 8C. Looking for Order 状压dp

    题目链接 给n个物品的坐标, 和一个包裹的位置, 包裹不能移动. 每次最多可以拿两个物品, 然后将它们放到包里, 求将所有物品放到包里所需走的最小路程. 直接状压dp就好了. #include < ...

  6. UVA10296 Jogging Trails(中国邮递员问题)(欧拉回路、一般图最大权匹配 / 状压DP)

    整理的算法模板合集: ACM模板 目录 思路 UVA10296 Jogging Trails 题目翻译: 给你n个点,m条无向边,每条边有一定的距离数值,构造成一个连通图.问从任意一点出发,遍历所有的 ...

  7. POJ 2411 Mondriaan‘s Dream(最清楚好懂的状压DP讲解)(连通性状态压缩DP)

    poj 2411 Mondriaan's Dream(最清晰的状压DP解析) 闫氏DP大法好 我们这里是一列一列地来,因为是一个棋盘性的状态压缩DP,从哪个方向都一样 摆放的小方格总方案数 等价于 横 ...

  8. 【每日DP】day2、P1879 [USACO06NOV]Corn Fields G玉米地(状压DP模板题)难度⭐⭐⭐★

    昨天的每日DP我还在写01背包,今天就到状压DP了,真刺激. P1879 [USACO06NOV]Corn Fields G 题目链接 输入 2 3 1 1 1 0 1 0 输出 9 一道简单的状压D ...

  9. hdu 4778 Gems Fight! 状压dp

    转自wdd :http://blog.csdn.net/u010535824/article/details/38540835 题目链接:hdu 4778 状压DP 用DP[i]表示从i状态选到结束得 ...

最新文章

  1. html怎么一段时间把网页背景更换_汽车轮毂多少公里更换一次?受到磕碰必须更换吗?...
  2. oracle 字典_Oracle只读用户通过JAVA应用程序导出其它用户数据最小权限
  3. 从0开始构建Arduino_STM32
  4. 华东信标组预赛前三名
  5. matlab矩阵方块网络着色imshow_matlab中用imshow()显示图像与图像矩阵的数据类型的关系...
  6. 推荐一个不到300k的Gif处理神器 - Gifsicle(免费下载)
  7. linux ssh Unused,安装openssh-portable时遇到的问题及解决办法
  8. 学python看书还是视频效率高_学习是看书还是看教学视频更有效率?
  9. Rust基础概念之数据类型
  10. linux 分区100g整数,160GB硬盘双系统整数分区推荐方案
  11. php构建webservice,php webservice实例(简单易懂)
  12. Python-pandas-Excel排序、筛选
  13. 重建致远OA系统的步骤
  14. jBPM4的PVM实现解析
  15. 腾讯网上共享excel使用总结
  16. 漫步者 lollipods 充电
  17. 贴近摄影测量 | 重建花山岩画只需两步!
  18. Unity Pico老版SDK手柄功能编写
  19. 架构基本概念和架构本质
  20. [ZROJ-955]折纸 Solution

热门文章

  1. apache+svn+ladp认证
  2. APP推广八大获客模式!
  3. fisheye使用mysql_Dual-fisheye viewer
  4. iOS设计规范、切图规范与需求
  5. 你真的理解什么是“递归”吗
  6. 【c++】牛客网 vivo2020届春季校园招聘在线编程考试题 手机锁屏的有效模式
  7. 源码安装卸载python
  8. ROS学习|SMACH状态机三(使用实例)
  9. C语言输入整数123输出321,C语言 递归调用倒序输出 设计一个函数,要求能将一个正整数n倒序输出,n的位数不定,列如:123,输出:321...
  10. 苹果手机apn怎么设置