HDU 2442
状态压缩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的更多相关文章
- 状态压缩DP总结
POJ1185 炮兵部队问题: 在平原上才能放置炮兵,每个炮兵的上下左右2格之内都不能出现别的炮兵 可以考虑在当前行放置炮兵它的右侧和下侧绝对不会出现炮兵即可,左侧和上侧就能省去考虑 明显的状态压缩d ...
- HDU 1710 Binary Tree Traversals (二叉树遍历)
Binary Tree Traversals Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/O ...
- HDU 5643 King's Game 打表
King's Game 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5643 Description In order to remember hi ...
- 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 ...
- HDOJ 2111. Saving HDU 贪心 结构体排序
Saving HDU Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- 【HDU 3037】Saving Beans Lucas定理模板
http://acm.hdu.edu.cn/showproblem.php?pid=3037 Lucas定理模板. 现在才写,noip滚粗前兆QAQ #include<cstdio> #i ...
- hdu 4859 海岸线 Bestcoder Round 1
http://acm.hdu.edu.cn/showproblem.php?pid=4859 题目大意: 在一个矩形周围都是海,这个矩形中有陆地,深海和浅海.浅海是可以填成陆地的. 求最多有多少条方格 ...
- HDU 4569 Special equations(取模)
Special equations Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u S ...
- HDU 4006The kth great number(K大数 +小顶堆)
The kth great number Time Limit:1000MS Memory Limit:65768KB 64bit IO Format:%I64d & %I64 ...
随机推荐
- 数论+DP HDOJ 4345 Permutation
题目传送门 题意:一个置换群,经过最少k次置换后还原.问给一个N个元素,在所有的置换群里,有多少个不同的k. 分析:这道题可以转化成:N = Σ ai ,求LCM ( ai )有多少个不同的值.比如N ...
- 图论/暴力 Codeforces Beta Round #94 (Div. 2 Only) B. Students and Shoelaces
题目传送门 /* 图论/暴力:这是个连通的问题,每一次把所有度数为1的砍掉,把连接的点再砍掉,总之很神奇,不懂:) */ #include <cstdio> #include <cs ...
- CalService
package org.crazyit.cal; import java.math.BigDecimal; /** * 计算业务类 * * @author yangenxiong yangenxion ...
- JS 对输入判断变化屏蔽中文输入法连续输入时触发的事件
//智能搜索提示 IntelligenceSearch: function IntelligenceSearch() { $('#keyWord').on('input', function () { ...
- 436 Find Right Interval 寻找右区间
给定一组区间,对于每一个区间 i,检查是否存在一个区间 j,它的起始点大于或等于区间 i 的终点,这可以称为 j 在 i 的“右侧”.对于任何区间,你需要存储的满足条件的区间 j 的最小索引,这意味着 ...
- windows系统里Cygwin中如何正确安装wget(图文详解)
具体步骤,见如下: https://ftp.gnu.org/gnu/wget/ 解压到Cygwin的主目录中,一般是 你的Cygwin目录/home/当前用户名/ . 我这是如下 先./c ...
- Kali linux 2016.2(Rolling)里安装中文输入法
写在前面的话 关于中文输入法,实在是有太多了.当然,你也不可以不安装,(安装了增强工具即可),在windows 里输入中文,复制进去即可. 但是呢,想成为高手,还是要学会安装和使用各版本的中文输入法. ...
- 将Jenkins的测试结果整合到Testlink
如果试用Jenkins进行构建,构建中的测试结果可以直接作为Testlink的自动直接结果. 1. Testlink 中新增custom field. 2. 用例中custom field中加 ...
- Java EE 目标
在大三上学期学习了Java se,只是简单的学习了语法,而且没有及时的复习巩固,语法知识已经忘了许多.在这个新学期,又有了Java EE这门课,书上的内容是从没学习过的新知识,只是在网站上看到过像Sp ...
- 迅为4412嵌入式安卓开发板兼容3G网络|4G网络
iTOP-Exynos4412开发板内置有无线 WIFI 模块.Bluetooth.GPS.Camera.3G等模组,陀螺仪等,支持 HDMI1.4(1080P/60Hz)显示,客户可以直接从开发平台 ...