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 ...
随机推荐
- SpringCloud开发学习总结(一)—— 基础知识
1:Dubbo和Spring Cloud的关系 就我个人对这两个框架的使用经验和理解,打个不恰当的比喻:使用Dubbo构建的微服务架构就像组装电脑,各环节我们的选择自由度很高,但是最终结果很有可能因为 ...
- git免密码
法1: git config --global credential.helper store 这样就自动储存密码 法2: 使用ssh访问(https:// 改成 ssh://)
- 快速体验openstack-用devstack安装openstack
官网安装说明: --2014年11月15日14:14:21 安装环境:Ubuntu12.04,安装官网的说明遇到了小问题,记录在这里 --http://docs.openstack.org/devel ...
- java之数据处理,小数点保留位数
1.返回字符串类型,保留后两位: public static String getRate(Object d) { return String.format("%.2f", d); ...
- 安卓(Android)关于 RecyclerView 不能填充满宽度
RecyclerView 不能填充满屏幕宽度 RecyclerView 的 Adapter 在使用是,一定要 @Overridepublic RecyclerView.ViewHolder onCre ...
- Activity的四种启动模式区别
(1) standard 模式启动模式,每次激活Activity时都会创建Activity,并放入任务栈中. (2) singleTop 如果在任务的栈顶正好存在该Activity的实例, 就重用该实 ...
- 对gridview绑定数据的操作方法及自定义显示内容
GridView中Eval和 Bind 的使用 Eval:绑定的是只读数据的显示:Bind:可以绑定只读数据也可以绑定更新数据,Bind方法还把字段和控件的绑定属性联系起来,使得 数据控件(比如Gri ...
- js获取select选中的标签option的值
js中获取方法 var obj = document.getElementByIdx_xx_x(”testSelect”); //定位id var index = obj.selectedInde ...
- AndroidStudio启动App时,数据取不到。
最近在用AndroidStudio开发App的时候,所连的服务器如果是换成本机上的,那么启动App的时候数据就读取不出来,连其它电脑上的服务器就是正常的,如下: 05-11 09:36:57.178 ...
- Cygwin, MinGW/MSYS, MinGW-W64/MSYS2
1. Cygwin http://www.cygwin.com/ Cygwin is a large collection of GNU and Open Source tools which pro ...