状态压缩DP , 和HDU2280极其相似

 #include <cstdio>
#include <cstring>
#include <iostream> using namespace std;
const int N = ;
int dp[N][<<][<<] , n , m; //s 表示当前第i行的状态 , u表示上一行状态 , v表示上上行的状态 , cnt表示到当前位置时总共占据的空间
void dfs(int s , int u , int v , int cnt , int k , int i) //由右到左,访问到第i行的第k位数字
{
if(k >= m){
dp[i][u][s] = max(dp[i][u][s] , cnt);
return;
}
if(k > ){
if(!(s & (<<k)) && !(u & (<<k-)) && !(v & (<<k)))
dfs(s | (<<k) , u | (<<k-) , v | (<<k) , cnt + , k+ , i);
if(!(s & (<<k)) && !(u & (<<k)) && !(v & (<<k-)))
dfs(s | (<<k) , u | (<<k) , v | (<<k-) , cnt + , k+ , i);
}
if(k > ){
if(!(s & (<<k-)) && !(u & (<<k-)) && !(v & (<<k-)))
dfs(s | (<<k-) , u | (<<k-) , v | (<<k-) , cnt + , k+ , i);
if(!(s & (<<k-)) && !(u & (<<k-)))
dfs(s | (<<k-) , u | (<<k-) , v , cnt + , k+ , i);
if(!(s & (<<k)) && !(u & (<<k-)))
dfs(s | (<<k) , u | (<<k-) , v , cnt + , k+ , i);
}
dfs(s, u , v , cnt , k+ , i);
} void dfs2(int s , int u , int cnt , int k)
{
if(k >= m){
dp[][u][s] = max(dp[][u][s] , cnt);
return;
}
if(k > ){
if(!(s & (<<k-)) && !(u & (<<k-)))
dfs2(s | (<<k-) , u | (<<k-) , cnt + , k+);
if(!(s & (<<k)) && !(u & (<<k-)))
dfs2(s | (<<k) , u | (<<k-) , cnt + , k+);
}
dfs2(s,u,cnt,k+);
}
int main()
{
// freopen("a.in","rb",stdin);
while(~scanf("%d%d",&n,&m)){
memset(dp,-,sizeof(dp)); if(n == ){
puts("");
continue;
} dfs2(,,,); for(int i = ; i<=n ; i++){
for(int j = ; j < <<m; j++){
for(int t = ; t<<<m ; t++){
if(dp[i-][t][j]>=){
dfs(,j,t,dp[i-][t][j],,i);
}
}
}
} int ans = ;
for(int i = ; i<<<m ; i++){
for(int j = ; j<<<m ; j++)
{
//cout<<"in: "<<i<<" "<<" "<<j<<" "<<dp[n][i][j]<<endl;
ans = max(ans , dp[n][i][j]);
}
}
printf("%d\n" , ans);
}
return ;
}

HDU 2442的更多相关文章

  1. 状态压缩DP总结

    POJ1185 炮兵部队问题: 在平原上才能放置炮兵,每个炮兵的上下左右2格之内都不能出现别的炮兵 可以考虑在当前行放置炮兵它的右侧和下侧绝对不会出现炮兵即可,左侧和上侧就能省去考虑 明显的状态压缩d ...

  2. HDU 1710 Binary Tree Traversals (二叉树遍历)

    Binary Tree Traversals Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/O ...

  3. HDU 5643 King's Game 打表

    King's Game 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5643 Description In order to remember hi ...

  4. HDU——T 2444 The Accomodation of Students

    http://acm.hdu.edu.cn/showproblem.php?pid=2444 Time Limit: 5000/1000 MS (Java/Others)    Memory Limi ...

  5. HDOJ 2111. Saving HDU 贪心 结构体排序

    Saving HDU Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  6. 【HDU 3037】Saving Beans Lucas定理模板

    http://acm.hdu.edu.cn/showproblem.php?pid=3037 Lucas定理模板. 现在才写,noip滚粗前兆QAQ #include<cstdio> #i ...

  7. hdu 4859 海岸线 Bestcoder Round 1

    http://acm.hdu.edu.cn/showproblem.php?pid=4859 题目大意: 在一个矩形周围都是海,这个矩形中有陆地,深海和浅海.浅海是可以填成陆地的. 求最多有多少条方格 ...

  8. HDU 4569 Special equations(取模)

    Special equations Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u S ...

  9. HDU 4006The kth great number(K大数 +小顶堆)

    The kth great number Time Limit:1000MS     Memory Limit:65768KB     64bit IO Format:%I64d & %I64 ...

随机推荐

  1. 外文翻译 《How we decide》赛场上的四分卫 第四节

    这是第一章的最后一节. 书的导言 本章第一节 本章第二节 本章第三节 制作肥皂剧是非常不易的.整个制作组都要很紧张的工作,每天都要拍摄一些新的事件.新的大转折的剧情需要被想象出来,新的剧本需要被编写, ...

  2. C#方法参数关键字

    一.params关键字 prams告诉函数的调用者,该函数的参数数量是可变,如果调用函数的参数标识了params关键字,那么我们可以使用逗号分割的参数或者一个数组来作为参数: 1.这里只能是数组,Li ...

  3. 对象输入输出流ObjectInputStream、ObjectOutputStream(对象序列化与反序列化)

    对象的输入输出流 : 主要的作用是用于写入对象信息与读取对象信息. 对象信息一旦写到文件上那么对象的信息就可以做到持久化了 对象的输出流: ObjectOutputStream 对象的输入流:  Ob ...

  4. 解决qt提示:qt.network.ssl: QSslSocket: cannot call unresolved function DH_free和qt.network.ssl: QSslSocket: cannot call unresolved function d2i_DHparams

    转载请注明出处:https://i.cnblogs.com/EditPosts.aspx?postid=7127254 运行环境:VS2015&Qt5.8 方法一(未能解决):把C:\Qt\Q ...

  5. Vue.js语法糖整理

    el:element 需要获取的元素,一定是HTML中的根容器元素 data:用于数据的存储 methods:用于存储各种方法 数据绑定字面量只加载一次{{* msg}} data里面可以进行简单的运 ...

  6. CentOS 6.4 linux下编译安装MySQL5.6.14

    CentOS 6.4下通过yum安装的MySQL是5.1版的,比较老,所以就想通过源代码安装高版本的5.6.14. 正文: 一:卸载旧版本 使用下面的命令检查是否安装有MySQL Server rpm ...

  7. Ubuntu Linux14 64位下在Android studio下用gradle编译Andrid项目时发生libz.so.1共享库找不到的解决方法。

    ---恢复内容开始--- 我在Ubuntu14 64为下安装了AS,但在用Gradle编译项目时总是报找不到 libz.so.1的错误. error while loading shared libr ...

  8. CAD控件,CAD插件使用教程:Android开发使用控件--开发环境的搭建

    Android开发使用控件入门--环境搭建 2014-12-24 09:57     14人阅读     评论(0)     收藏         编辑     删除 CAD控件.CAD三维控件,手机 ...

  9. ssd训练自己的数据集

    1.在ssd/caffe/data下创建VOC2007的目录,将ssd/caffe/data/VOC0712里的create_data.sh.create_list.sh和labelmap_voc.p ...

  10. js 发送短信验证码倒计时

    html <input type="button" id="btn" value="免费获取验证码" onclick="se ...