题目大意

给定一个N*M大小的大小的蛋糕,蛋糕的有些地方已经放置了东西,要求你在蛋糕上放入尽量少的1*2大小的巧克力,使得蛋糕不能够再放入巧克力

题解

和POJ1038恰好相反,此题是放入尽量少的巧克力,根据前两行的状态来进行当前行的放置,用dfs来进行三行的状态枚举,并同时检查放置是否合法,放完m列之后就可以进行状态转移了

代码:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
#define MAXN 130
#define INF 0x3f3f3f3f
int dp[2][MAXN][MAXN];
int n,m,s[75];
bool check(int step,int x,int y)
{
if(step>=1&&!(x&(1<<(step-1)))&&!(y&(1<<(step-1)))) return false;
if(step>=2&&!(x&(1<<(step-1)))&&!(x&(1<<(step-2)))) return false;
return true;
}
void dfs(int sum,int i,int x,int y,int st,int step)
{
if(!check(step,x,y)) return;
if(step==m)
{
dp[i][st][x]=min(dp[i][st][x],sum);
return;
}
if(!(x&(1<<step))&&!(st&(1<<step)))
dfs(sum+1,i,x|(1<<step),y,st|(1<<step),step+1);
if(step+2<=m&&!(x&(1<<step))&&!(x&(1<<(step+1))))
dfs(sum+1,i,x|(1<<step)|(1<<(step+1)),y,st,step+2);
dfs(sum,i,x,y,st,step+1);
}
int main()
{
scanf("%d%d",&n,&m);
char str[15];
memset(s,0,sizeof(s));
for(int i=1; i<=n; i++)
{
scanf("%s",str);
int len=strlen(str);
for(int j=0; j<len; j++)
s[i]|=(str[j]=='*'?1:0)<<j;
}
memset(dp,INF,sizeof(dp));
dp[1][s[1]][(1<<m)-1]=0;
for(int i=2; i<=n+1; i++)
{
memset(dp[i&1],INF,sizeof(dp[i&1]));
for(int j=0; j<(1<<m); j++)
for(int k=0; k<(1<<m); k++)
if(dp[(i+1)&1][j][k]!=INF)
dfs(dp[(i+1)&1][j][k],i&1,j,k,s[i],0);
}
int ans=INF;
for(int i=0; i<(1<<m); i++)
ans=min(ans,dp[(n+1)&1][0][i]);
printf("%d\n",ans);
return 0;
}

SGU132 - Another Chocolate Maniac(状态压缩DP)的更多相关文章

  1. SGU 132 Another Chocolate Maniac 状态压缩DP

    感觉不是很好写的一道状态压缩. dp[i][j][k]表示第 i 行状态为k,第i - 1行状态为 j,具体细节见代码. 内存卡的很死,要用滚动数组. 还有一个比较坑爹的地方是它在输入蛋糕的时候中间可 ...

  2. hoj2662 状态压缩dp

    Pieces Assignment My Tags   (Edit)   Source : zhouguyue   Time limit : 1 sec   Memory limit : 64 M S ...

  3. POJ 3254 Corn Fields(状态压缩DP)

    Corn Fields Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 4739   Accepted: 2506 Descr ...

  4. [知识点]状态压缩DP

    // 此博文为迁移而来,写于2015年7月15日,不代表本人现在的观点与看法.原始地址:http://blog.sina.com.cn/s/blog_6022c4720102w6jf.html 1.前 ...

  5. HDU-4529 郑厂长系列故事——N骑士问题 状态压缩DP

    题意:给定一个合法的八皇后棋盘,现在给定1-10个骑士,问这些骑士不能够相互攻击的拜访方式有多少种. 分析:一开始想着搜索写,发现该题和八皇后不同,八皇后每一行只能够摆放一个棋子,因此搜索收敛的很快, ...

  6. DP大作战—状态压缩dp

    题目描述 阿姆斯特朗回旋加速式阿姆斯特朗炮是一种非常厉害的武器,这种武器可以毁灭自身同行同列两个单位范围内的所有其他单位(其实就是十字型),听起来比红警里面的法国巨炮可是厉害多了.现在,零崎要在地图上 ...

  7. 状态压缩dp问题

    问题:Ignatius has just come back school from the 30th ACM/ICPC. Now he has a lot of homework to do. Ev ...

  8. BZOJ-1226 学校食堂Dining 状态压缩DP

    1226: [SDOI2009]学校食堂Dining Time Limit: 10 Sec Memory Limit: 259 MB Submit: 588 Solved: 360 [Submit][ ...

  9. Marriage Ceremonies(状态压缩dp)

     Marriage Ceremonies Time Limit:2000MS     Memory Limit:32768KB     64bit IO Format:%lld & %llu ...

随机推荐

  1. 【leetcode】Longest Common Prefix (easy)

    Write a function to find the longest common prefix string amongst an array of strings. 思路:找最长公共前缀 常规 ...

  2. coco2d-js 多屏适配相关API

    setDesignResolutionSize() //设计分辨率大小及模式  setContentScaleFactor() //内容缩放因子 setSearchPaths() //资源搜索路径 g ...

  3. Spring下载地址

    spring官方网站改版后,不提供直接下载,而是通过maven下载,所以将直接下载的地址给出: http://maven.springframework.org/release/org/springf ...

  4. HeadFirst设计模式之RMI介绍

    一.使用步骤 1.generate stubs and skeletons:Run rmic on the remote implementation class 如:D:\Workspaces\My ...

  5. ANDROID_MARS学习笔记_S01_012_SeekBar

    1.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns: ...

  6. Java对象相关元素的初始化过程

    1.类的成员变量.构造函数.成员方法的初始化过程 当一个类使用new关键字来创建新的对象的时候,比如Person per = new Person();JVM根据Person()寻找匹配的类,然后找到 ...

  7. IE9 表格错位bug

    最近做项目的时候,出现一个只在原生IE9(非模拟)下的bug. bug图片如下: 以上两个模块的html代码和样式都是一样的,然而下面的显示却出现了各种对齐的bug. 用IE9的调试器查看,代码完全一 ...

  8. poj 3009 Curling 2.0( dfs )

    题目:http://poj.org/problem?id=3009 参考博客:http://www.cnblogs.com/LK1994/ #include <iostream> #inc ...

  9. bzoj1607: [Usaco2008 Dec]Patting Heads 轻拍牛头

    筛法. 枚举每个数,它会对它的倍数的答案有贡献. 数大了以后,倍数相应少了很多.比枚举每个数的约数要好的多. 自己yy了一种分步做法.小于sqrt(m)被当作约数枚举,大于sqrt(m)的枚举倍数. ...

  10. 理解java reference

    Java世界泰山北斗级大作<Thinking In Java>切入Java就提出“Everything is Object”.在Java这个充满Object的世界中,reference是一 ...