HDOJ 2167 Pebbles (状态压缩dp)
题意:给你一个n*n的矩阵,让你从矩阵中选择一些数是的他们的和最大,规则是:相邻的两个数不能同时取,位置为(i,j)的数与(i+1,j),(i-1,j),(i,j+1),(i,j-1),(i+1,j+1),(i+1,j-1),(i-1,j+1),(i-1,j-1)相邻。
思路:很常见的状态压缩dp,设dp[i][j]表示前i行,第i行状态为j时的最大和,那么dp[i][j] = max(dp[i-1][k]) + (该状态下取第i行的那些数的和)。
- #include<cstdio>
- #include<string>
- #include<cstring>
- #include<iostream>
- #include<algorithm>
- using namespace std;
- const int MAXN = 16;
- const int MAXM = 1700;
- int status[MAXM],cnt;
- int dp[MAXN][MAXM],mat[MAXN][MAXN];
- void createStatus(int n){
- cnt = 0;
- int up = (1 << n);
- for(int i = 0;i < up;i ++){
- if(i & (i << 1)) continue;
- status[cnt++] = i;
- }
- }
- int calSum(int n,int m){
- int ret = 0;
- for(int i = 0;i < 16;i ++)
- if(m & (1 << i)) ret += mat[n][i];
- return ret;
- }
- void init(int n){
- createStatus(n);
- memset(dp,0,sizeof dp);
- for(int i = 0;i < cnt;i ++) dp[0][i] = calSum(0,status[i]);
- }
- bool isValid(int n,int m){
- if(n & m) return false;
- if((n << 1) & m || (m << 1) & n) return false;
- return true;
- }
- void work(int n){
- init(n);
- for(int i = 1;i < n;i ++){
- for(int j = 0;j < cnt;j ++){
- for(int k = 0;k < cnt;k ++){
- if(!isValid(status[j],status[k])) continue;
- dp[i][j] = max(dp[i-1][k],dp[i][j]);
- }
- dp[i][j] += calSum(i,status[j]);
- }
- }
- int ans = 0;
- for(int i = 0;i < cnt;i ++) ans = max(ans,dp[n-1][i]);
- printf("%d\n",ans);
- }
- int main(){
- char str[MAXN*4];
- //freopen("in.cpp","r",stdin);
- while(gets(str)){
- int n(0),len(strlen(str));
- for(int i = 0;i < len;i += 3){
- mat[0][n++] = (str[i]-'0')*10 + str[i+1] - '0';
- }
- for(int i = 1;i < n;i ++){
- for(int j = 0;j < n;j ++) scanf("%d",&mat[i][j]);
- }
- work(n);
- getchar(),getchar();
- }
- return 0;
- }
HDOJ 2167 Pebbles (状态压缩dp)的更多相关文章
- HDU 2167 Pebbles 状态压缩dp
Pebbles Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Sub ...
- HDOJ 2442 -bricks 状态压缩DP 一直TLE.打表过的..
有5个砖块..加上一个空着不放..那么有6种状态..所以很明显的可以用6进制的状态DP... 不过这么做..我觉得我已经能优化的都优化了...还是超时..一看数据范围是100*6..打表先AC了.. ...
- 状态压缩dp(hdu2167,poj2411)
hdu2167 http://acm.hdu.edu.cn/showproblem.php?pid=2167 给定一个N*N的板子,里面有N*N个数字,选中一些数字,使得和最大 要求任意两个选中的数字 ...
- HDU_2167_状态压缩dp
http://acm.hdu.edu.cn/showproblem.php?pid=2167 第一道状态压缩dp,其实就是爆搜,只不过把排除了大量不可能的情况,先用sta保存每行可能的情况,sum[i ...
- hoj2662 状态压缩dp
Pieces Assignment My Tags (Edit) Source : zhouguyue Time limit : 1 sec Memory limit : 64 M S ...
- POJ 3254 Corn Fields(状态压缩DP)
Corn Fields Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 4739 Accepted: 2506 Descr ...
- [知识点]状态压缩DP
// 此博文为迁移而来,写于2015年7月15日,不代表本人现在的观点与看法.原始地址:http://blog.sina.com.cn/s/blog_6022c4720102w6jf.html 1.前 ...
- HDU-4529 郑厂长系列故事——N骑士问题 状态压缩DP
题意:给定一个合法的八皇后棋盘,现在给定1-10个骑士,问这些骑士不能够相互攻击的拜访方式有多少种. 分析:一开始想着搜索写,发现该题和八皇后不同,八皇后每一行只能够摆放一个棋子,因此搜索收敛的很快, ...
- DP大作战—状态压缩dp
题目描述 阿姆斯特朗回旋加速式阿姆斯特朗炮是一种非常厉害的武器,这种武器可以毁灭自身同行同列两个单位范围内的所有其他单位(其实就是十字型),听起来比红警里面的法国巨炮可是厉害多了.现在,零崎要在地图上 ...
随机推荐
- jQuery 扩展 【ajax实例】
先前写工具类都是自定义类,直接prototype,jQuery扩展这一块儿,一直也没写过,刚好今天有空,写个试试. 已经有很多人对jQuery,jQuery.fn,jQuery.fn.extend详细 ...
- Java知识总结--数据库
1 薪水排序后薪水排名在第3-5的员工 1)select * from(select ename,sal,rownum rn from (select ename,sal from emp_44 wh ...
- javascript正则表达式 —— RegExp 对象
定义 RegExp RegExp 对象用于存储检索模式. 通过 new 关键词来定义 RegExp 对象.以下代码定义了名为 patt1 的 RegExp 对象,其模式是 "e": ...
- 转:jQuery.fn.extend与jQuery.extend到底区别在哪?
还是先吐个槽,网上都都是转载抄袭,基本上就那么一两篇文章,说的还不清楚.... 正文: 其实说白了,从两个方法本身就能看出来端倪. 我们先把jQuery看成了一个类,这样好理解一些. jQuery.e ...
- 【BZOJ】1088: [SCOI2005]扫雷Mine
1088: [SCOI2005]扫雷Mine Description 相 信大家都玩过扫雷的游戏.那是在一个n*m的矩阵里面有一些雷,要你根据一些信息找出雷来.万圣节到了,“余”人国流行起了一种简单的 ...
- ubuntu系统软件
1.办公软件:wps 2.浏览器:firefox,opera 3.思维导图:xmind 如果您有好的软件,请推荐给我,谢谢!
- 几种C#实现播放声音的方法
在这里介绍使用C#实现播放声音的几种方法,都是利用组件等方法来实现的,有兴趣的话可以看下. 第一种是利用DirectX 1.安装了DirectX SDK(有9个DLL文件).这里我们只用到MicroS ...
- js展开更多
var introduces = { inIt : function(){ introduces.imgLoad(); introduces.showMore(0,'hioh',86); introd ...
- 基于协同过滤的个性化Web推荐
下面这是论文笔记,其实主要是摘抄,这片博士论文很有逻辑性,层层深入,所以笔者保留的比较多. 看到第二章,我发现其实这片文章对我来说更多是科普,科普吧…… 一.论文来源 Personalized Web ...
- [cc150] 硬币问题
Given an infinite number of quarters (25 cents), dimes (10 cents), nickels (5 cents) and pennies (1 ...