多组数据

给你一个n*n的矩阵

不能相邻的取数 上下左右

求最大的和

#include<stdio.h>
#include<algorithm>
#include<string.h> using namespace std; int n;
int z[][];
int dp[][<<+],cnt; //dp和滚动数组差不多 推出的行只有相邻的有关系
int num[]; //用来记录 合法的状态 就是同行要不相邻 int main()
{
cnt=;
for(int i=;i<(<<);i++)
if((i&(i<<))==)
num[cnt++]=i; while(scanf("%d",&n)!=EOF)
{
for(int i=;i<n;i++)
for(int j=;j<n;j++)
scanf("%d",&z[i][j]);
memset(dp,,sizeof(dp));
int len=(<<n); for(int i=;i<n;i++)
{
int p=i&; //奇数偶数
for(int j=;j<cnt;j++)
{
if(num[j]>=len)
break;
int sum=;
for(int k=;k<n;k++) //和这个状态都是1 可以取
{
if((num[j]&(<<k)))
sum+=z[i][k];
}
int m1=;
for(int k=;k<cnt;k++)
{
if(num[j]>=len)
break;
if(!(num[j]&num[k])) //上面最大的合法的状态转移过来
m1=max(m1,dp[-p][num[k]]);
}
dp[p][num[j]]=sum+m1; //本行加上面的
}
}
int p=(n-)&; //最后奇偶
int ans=;
for(int i=;i<len;i++) //最大的状态
ans=max(dp[p][i],ans);
printf("%d\n",ans);
} return ;
}

状态压缩 HDU 1565的更多相关文章

  1. 状态压缩 HDU 3182

    t组数据 n个汉堡 e的能量 接下来的2行 val    n个 得到的权 cost  n个 花去的能量 接下来n行 每行一个q  q个数字 代表这类汉堡做好要的前提  每个汉堡只能用一次 #inclu ...

  2. 状态压缩 HDU 3091

    多组数据 n个点m条边 求有几个经过所有的点的环 最好用__int64 #include<stdio.h> #include<algorithm> #include<st ...

  3. 状态压缩 hdu #10

    You are playing CSGO. There are n Main Weapons and m Secondary Weapons in CSGO. You can only choose ...

  4. hdu 1565(状态压缩基础题)

    题意:容易理解. 分析:这是我做的状态压缩第二题,一开始超内存了,因为数组开大了,后来超时了,因为能够成立的状态就那么多,所以你应该先把它抽出来!!总的来说还是比较简单的!! 代码实现: #inclu ...

  5. HDU 3605:Escape(最大流+状态压缩)

    http://acm.hdu.edu.cn/showproblem.php?pid=3605 题意:有n个人要去到m个星球上,这n个人每个人对m个星球有一个选择,即愿不愿意去,"Y" ...

  6. [HDU 4336] Card Collector (状态压缩概率dp)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4336 题目大意:有n种卡片,需要吃零食收集,打开零食,出现第i种卡片的概率是p[i],也有可能不出现卡 ...

  7. ACM: HDU 5418 Victor and World - Floyd算法+dp状态压缩

    HDU 5418 Victor and World Time Limit:2000MS     Memory Limit:131072KB     64bit IO Format:%I64d & ...

  8. HDU 1074 (状态压缩DP)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1074 题目大意:有N个作业(N<=15),每个作业需耗时,有一个截止期限.超期多少天就要扣多少 ...

  9. HDU 4511 (AC自动机+状态压缩DP)

    题目链接:  http://acm.hdu.edu.cn/showproblem.php?pid=4511 题目大意:从1走到N,中间可以选择性经过某些点,比如1->N,或1->2-> ...

随机推荐

  1. C#类型转换运算符之 explicit implicit

    类型转换运算符 explicit和implicit用于声明用户定义的类型转换运算符,如果可以确保转换过程不会造成数据丢失,则可使用这两个关键字在用户定义的类型和其他类型之间进行转换. explicit ...

  2. Java面向对象:多态

    多态:具有表现多种形态的能力的特征(同一个实现接口,使用不同的实例而执行不同的操作) 实现多态的优点:为了方便统一调用! 实现多态的三种方式! 1:子类到父类的转换: 例: 1 Dog dog=new ...

  3. [No000013]在Office中关闭自动拼写检查和自动语法检查

    大家知道有时候语法检查很麻烦,搞得文档里都是红线和绿线.解决办法就是关闭自动拼写检查.现在我们来介绍怎么关闭office包括Word .Outlook .PowerPoint .OneNote .Pu ...

  4. 一个简单的Android富文本TextView实现

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 24.0px Helvetica; color: #555555 } p.p2 { margin: 0.0p ...

  5. AlertDialog禁止返回键

    android 如何让dialog不消失,即使是用户按了返回键dialog也不消失 解决的问题:软件提示升级的dialog时候,用户有可能按了返回键,但是现在的需求是用户只能按"确定升级&q ...

  6. Android终端配置isatap隧道使用IPV6的方法

    使用isatap隧道可以在手机有IPV4网络的情况下访问IPv6网络资源.关于isatap隧道的配置方法,清华.上交两所学校都给出了相应的在windows xp/2003,windows 2000,以 ...

  7. 安装ESXi5.5遇到Relocating modules and starting up the kernel的处理

    在一些Dell较旧的服务器上安装ESXi 5.x时, 会遇到卡在Relocating modules and starting up the kernel过不去的问题. 比如我装的这台CS24VSS. ...

  8. ListView实现原理

    转载:http://blog.csdn.net/guolin_blog/article/details/44996879 在Android所有常用的原生控件当中,用法最复杂的应该就是ListView了 ...

  9. Html5 Egret游戏开发 成语大挑战(一)开篇

    最近接触了Egret白鹭引擎,感觉非常好用,提供了各种各样的开发工具让开发者和设计者更加便捷,并且基于typescript语言开发省去了很多学习成本,对于我们这种掉微软坑许久的童鞋来说,确实很有吸引力 ...

  10. NOI2018准备Day3

    noip2016成绩出来了,199,268名 noip2017需要考过6个女生才能进省队,不包括明年会突然跳出来的大神...... 今天晚上玩了一晚上,做了2道题. 这事儿只干今晚一次