状态压缩dp

详见代码

 /*
状态压缩dp
dp[ i ][ j ]:第i行j状态的最大和
dp[i][j] = max( dp[i-1][k]+sum[i][j] );
题意:给定一个N*N的方格,让你在里面取出一些数使其和最大,要求每一个数不能与其相邻的8个数同时取出
*/
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<algorithm>
#include<iostream>
#include<queue>
#include<stack>
#include<math.h>
#include<map>
using namespace std;
const int maxn = ;
int sum[ maxn+ ][ <<maxn ];//sum[i][j]:第i行j状态的数字和
int s[ <<maxn ];//合格的状态的集合
int dp[ maxn+ ][ <<maxn ];//dp[i][j]:第i行j状态的最大和
int mat[ maxn+ ][ maxn+ ];
int binary[ maxn+ ];
void init_binary( ){
binary[ ] = ;
for( int i=;i<;i++ ){
binary[ i ] = *binary[ i- ];
}
} int solve( int n ){
int cnt_state = ;
memset( dp,,sizeof( dp ) );
memset( sum,,sizeof( sum ) );
int N = (<<n);
for( int i=;i<N;i++ ){
if( ((i<<)&i)== ){
s[ cnt_state++ ] = i;
}
}//选出无相邻数字的状态
for( int i=;i<n;i++ ){
for( int j=;j<cnt_state;j++ ){
for( int k=;k<n;k++ ){
if( binary[k]&s[ j ] ){
sum[ i ][ j ] += mat[ i ][ k ];
}
}
}
}//预处理出sum值
int ans = ;
for( int i=;i<cnt_state;i++ ){
dp[][ i ] = sum[ ][ i ];
ans = max( ans,dp[][i] );
}
for( int i=;i<n;i++ ){
for( int j=;j<cnt_state;j++ ){
for( int k=;k<cnt_state;k++ ){//前一行的状态
if( (s[j]&s[k])== ){
if( (s[j]&(s[k]<<))== ){
if( (s[j]&(s[k]>>))== ){
dp[ i ][ j ] = max( dp[ i- ][ k ]+sum[ i ][ j ],dp[ i ][ j ] );
}
}
}
}
ans = max( ans,dp[i][j] );
}
}
return ans;
} int main(){
char str[ ];
init_binary();
while( gets( str ) ){
int len = strlen( str );
int n = ;
for( int i=;i<len;i+= ){
mat[][n++] = (str[i]-'')*+str[i+]-'';
}
for( int i=;i<n;i++ ){
gets(str);
int cc = ;
for( int j=;j<len;j+= ){
mat[i][cc++] = (str[j]-'')*+str[j+]-'';
}
}
int ans = solve( n );
printf("%d\n",ans);
getchar();
}
return ;
}

HDU2167+状态压缩DP的更多相关文章

  1. 状态压缩dp(hdu2167,poj2411)

    hdu2167 http://acm.hdu.edu.cn/showproblem.php?pid=2167 给定一个N*N的板子,里面有N*N个数字,选中一些数字,使得和最大 要求任意两个选中的数字 ...

  2. HDU1565+状态压缩dp

    简单的压缩状态 dp /* 状态压缩dp 同hdu2167 利用滚动数组!! */ #include<stdio.h> #include<string.h> #include& ...

  3. hoj2662 状态压缩dp

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

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

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

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

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

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

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

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

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

  8. 状态压缩dp问题

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

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

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

随机推荐

  1. 为什么margin-top不是作用于父元素

    为什么margin-top不是作用于父元素:建议:尽可能的手写代码,可以有效的提高学习效率和深度.至于margin-top属性的基本用法再简单不过,那就是设置一个对象的上外边距,看下面的代码实例: & ...

  2. 1.1、Mybatis一级缓存测试

    package me.gacl.test; import me.gacl.domain.User; import me.gacl.util.MyBatisUtil; import org.apache ...

  3. 【高级JEE技术】JMS

    ActiveMQ消息服务器. ActiveMQ是apache的一种jms标准实现,支持两种模型,点对点发送消息以及发布订阅者模型. 为了规范JMS API,JMS为消息传送定义了很多概念: JMS客户 ...

  4. ajax调用服务的基本格式

    <个人积累,转载请注明出处> 格式如下: $.ajax({ type: "post", //访问WebService使用Post方式请求 url: "http ...

  5. VBA实现随意输入组合码,查询唯一标识码

    记录背景: 需要在excel中查询出组合码,对应的唯一标识码. 举例 组合码:4+5+6+9+1*2   标识码:A1 界面随意输入组合码:1*2+4+5+6+9  输出标识码:A1 VBA实现: P ...

  6. 从CSDN转战于此

    平时喜欢写博客,开始是再CSDN,但CSDN博客功能实在不是很好.听说博客园的博客功能很不错,今天就来到此地.实际上很早就注册了博客园,但博客今天才申请的. 博客园,来了!

  7. 前台页面Josn 数组在后台.cs代码中的解析

    后台代码: //解析jObject字符串 json_wang 2015/01/27 //var passengerListStr = BookingTicket_PassengerList_Hidde ...

  8. 解决VS2012【加载......符号缓慢】的问题

    http://blog.csdn.net/shi0090/article/details/19411777 最近在用VS2012调试时,经常出现"加载......符号缓慢的问题", ...

  9. Windows下lex 与 yacc的使用(2)

                                 Windows下lex 与 yacc的使用                                                   ...

  10. jquery的effect-color对easyui没效果.自己冒险写个边框的颜色闪烁.

    "jquery-ui-effect-color.js" 是从jqueryui下载的color动画部分(自己改了个名字). 链接 <!DOCTYPE html> < ...