Hdu-1565 电网接入(1) (国家压缩dp获得冠军
正方形格通路(1)
Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 4702 Accepted Submission(s): 1782
从中取出若干个数。使得随意的两个数所在的格子没有公共边,就是说所取的数所在的2个格子不能相邻。而且取出的数的和最大。
3
75 15 21
75 15 28
34 70 5
188
入门压缩dp,与
Poj - 3254 Corn Fields
类似。
用dp[i][j]表示前i行。第i行选第j种状态时的最优解,
首先找出全部本行不冲突的状态(即这一行中没有相邻的情况),存入state数组
计算出第i行取第j种状态时可得到的数值stn[i][j]
那么dp[i][j]=max{dp[i][j],dp[i-1][k]+stn[i][j]}
(k表示第i-1行取第k种状态
终于答案即为dp[n][j]中的最大值。
代码:
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
const int hpn=18000;
int state[hpn],stn[25][hpn],dp[25][hpn];
//dp[i][j]:前i行,第i行选第j种状态时的最优解
int mst,map[25][25];//第i行选第j种状态时的值 inline int bet(int x,int y)
{
if(x>y) return x;
return y;
} void find_all_state(int n)
{
memset(state,0,sizeof(state));
mst=0;//最多有多少种状态
int lin=(1<<n),index=1;
for(int i=0;i<lin;++i)
{
if((i&(i<<1))==0)
{
state[index]=i;
++mst;
++index;
}
}
} int main()
{
int n;
while(cin>>n)
{
if(n==0)
{
cout<<0<<endl;
continue;
}
find_all_state(n); for(int i=1;i<=n;++i)
{
for(int j=1;j<=n;++j)
{
scanf("%d",&map[i][j]);
}
} memset(stn,0,sizeof(stn));
for(int i=1;i<=n;++i)
{
for(int j=1;j<=mst;++j)
{
int b=n;
for(int t=1;t<(1<<n);t=(t<<1))
{
if((t&state[j])!=0)
{
stn[i][j]+=map[i][b];
}
--b;
}
}
}//统计第i行选第j种状态时可得到的值 memset(dp,0,sizeof(dp));
for(int i=1;i<=mst;++i)//第一行取第i种状态时
{
dp[1][i]=stn[1][i];
}
for(int i=2;i<=n;++i)//对于第i行
{
for(int j=1;j<=mst;++j)//取第j种状态
{
for(int k=1;k<=mst;++k)//第i-1行取第k种状态
{
if((state[j]&state[k])!=0) continue;
dp[i][j]=bet(dp[i][j],dp[i-1][k]+stn[i][j]);
}
}
} int ans=0;
for(int i=1;i<=mst;++i)
{
ans=bet(ans,dp[n][i]);
} cout<<ans<<endl;
}
return 0;
}
版权声明:本文博主原创文章,博客,未经同意不得转载。
Hdu-1565 电网接入(1) (国家压缩dp获得冠军的更多相关文章
- hdu 5025 Saving Tang Monk 状态压缩dp+广搜
作者:jostree 转载请注明出处 http://www.cnblogs.com/jostree/p/4092939.html 题目链接:hdu 5025 Saving Tang Monk 状态压缩 ...
- HDU 3681 Prison Break(状态压缩dp + BFS)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3681 前些天花时间看到的题目,但写出不来,弱弱的放弃了.没想到现在学弟居然写出这种代码来,大吃一惊附加 ...
- HDU 6125 Free from square 状态压缩DP + 分组背包
Free from square Problem Description There is a set including all positive integers that are not mor ...
- hdu - 5045 - Contest(国家压缩dp)
意甲冠军:N个人M通过主打歌有自己的期望,每个问题发送人玩.它不能超过随机播放的次数1,追求最大业绩预期 (1 ≤ N ≤ 10,1 ≤ M ≤ 1000). 主题链接:pid=5045" ...
- HDU 1565 方格取数(1) 轮廓线dp
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1565 方格取数(1) Time Limit: 10000/5000 MS (Java/Others) ...
- HDU 1074 Doing Homework【状态压缩DP】
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1074 题意: 给定作业截止时间和完成作业所需时间,比截止时间晚一天扣一分,问如何安排作业的顺序使得最 ...
- poj 3254 Corn Fields 国家压缩dp
意甲冠军: 要在m行n陆行,有一些格您可以种树,别人做不到的.不相邻的树,我问了一些不同的共同拥有的法律. 分析: 从后往前种,子问题向父问题扩展,当种到某一格时仅仅有他和他后面的n-1个格子的情况对 ...
- HDU 1074 Doing Homework (状态压缩DP)
Doing Homework Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)To ...
- HDU 1565 方格取数(1) ——插头DP
[题目分析] 其实直接状压就可以了. 但是有点闲,又写了一个可读性极差,智商低下,很(gou)好(pi)的代码 [代码] #include <cstdio> #include <cs ...
随机推荐
- 算法起步之Kruskal算法
原文:算法起步之Kruskal算法 说完并查集我们接着再来看这个算法,趁热打铁嘛.什么是最小生成树呢,很形象的一个形容就是铺自来水管道,一个村庄有很多的农舍,其实这个村庄我们可以看成一个图,而农舍就是 ...
- Cocos2d-x-lua游戏两个场景互相切换MainScene01切换到MainScene02
/* 场景一lua代码 */ require "MainScene02" local dic_size = CCDirector:sharedDirector():getWinSi ...
- Selenium 2.0 WebDriver 自动化测试 使用教程 实例教程 API快速参考
Selenium 2.0 WebDriver 自动化测试 使用教程 实例教程 API快速参考 //System.setProperty("webdriver.firefox.bin" ...
- sd nfrmtl
http://www.zhihu.com/collection/24337307 http://www.zhihu.com/collection/24337259 http://www.zhihu.c ...
- HBase经常使用操作之namespace
1.介绍 在HBase中,namespace命名空间指对一组表的逻辑分组,类似RDBMS中的database,方便对表在业务上划分.Apache HBase从0.98.0, 0.95.2两个版本号開始 ...
- commons.net.telnet使用示例
import org.apache.commons.net.telnet.TelnetClient; import java.io.IOException; public class TelnetDe ...
- [置顶] Firefox OS 学习——manifest.webapp结构分析
在Firefox OS 学习——Gaia 编译分析 这篇文章多次提到manifest.webapp文件,对于做过android app 开发的人来说,都很熟悉Android.mk 和Manifest ...
- 【Ruby】Ruby的model学习——Active Record Associations
在阅读的过程中有不论什么问题,欢迎一起交流 邮箱:1494713801@qq.com QQ:1494713801 一.怎样定义关联 两个model之间经常会存在关联关系,为了解决这些关联引起的复 ...
- TMG 2010 VPN配置
微软的ISA 到2006以后就叫TMG了,上周在公司的服务器上安装测试了下,虽然增加了很多功能,但是主要功能上和ISA 2004差不多,最近在部署L2TP VPN,由于防火墙带的远程访问VPN为纯的L ...
- FZU 2113(数位dp)
题目连接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=38054 题意:求区间[a,b]中包含'1'的个数. 分析:数位dp ...