hdu 2167(状态压缩基础题)
题意:给你一个矩阵,让你在矩阵中找一些元素使它们加起来和最大,但是当你使用某一个元素时,那么这个元素周围的其它八个元素都不能取!
分析:这是一道比较基础的状态压缩题,也是我做的第三道状态压缩的题,但是这个题目的输入确实让我很无语,开始的时候wa一次,后来改成了超时,最后还是参照别人的输入ac的!
代码实现:
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std; int n,map[][],dp[][(<<)+];
int a[],num; void chushihua()
{
int i,max=<<;
for(i=; i<max; i++)
if((i&(i<<))==)
a[num++]=i;
} int qiu(int r,int flag)
{
int i,sum=,x=<<(n-);
for(i=; i<=n; i++)
{
if((flag&x)!=)
sum=sum+map[r][i];
x=x>>;
}
return sum;
} void solve()
{
int res=,i,j,k,p=,max,temp;
max=<<n;
memset(dp,,sizeof(dp));
for(i=; i<=n; i++)
{
p=p^;
memset(dp[p],,sizeof(dp[p]));
for(j=; j<num&&a[j]<max; j++)
{
temp=qiu(i,a[j]);
for(k=; k<num&&a[k]<max; k++)
{
if(((a[j]&a[k])==)&&(((a[j]<<)&a[k])==)&&(((a[j]>>)&a[k])==))
{
if(dp[p][a[j]]<(temp+dp[-p][a[k]]))
dp[p][a[j]]=temp+dp[-p][a[k]];
if(res<dp[p][a[j]])
res=dp[p][a[j]];
}
}
}
}
printf("%d\n",res);
} int main()
{
char ch[],temp;
num=;
chushihua();
while(gets(ch))
{
int i , j ;
i = ;
do
{
if(ch[] == ) break ;
int len = strlen(ch);
j = ;
i++ ;
for(int c=; c<len; c++)
{
if(ch[c] == ' ') continue ;
j++ ;
map[i][j] = *(ch[c]-'') + ch[c+]-'' ;
c++ ;
}
}
while(gets(ch)!=NULL) ;
n = i ;
solve();
}
return ;
}
hdu 2167(状态压缩基础题)的更多相关文章
- hdu 1565(状态压缩基础题)
题意:容易理解. 分析:这是我做的状态压缩第二题,一开始超内存了,因为数组开大了,后来超时了,因为能够成立的状态就那么多,所以你应该先把它抽出来!!总的来说还是比较简单的!! 代码实现: #inclu ...
- poj 3254(状态压缩基础题)
题意:就是你给一个n行m列的矩阵,矩阵里的元素由0和1组成,1代表肥沃的土地可以种植作物,0则不可以种植作物,并且相邻的土地不能同时种植作物,问你有多少种种植方案. 分析:这是我做的第一道状态压缩dp ...
- hdu 2167 状态压缩dp
/* 状态转移方程:dp[i][j]=Max(dp[i][j],dp[i-1][k]+sum[i][j]); */ #include<stdio.h> #include<string ...
- hdu 2167 状态压缩
/*与1565的解法差不多*/ #include<stdio.h> #include<string.h> int map[16][16]; int dp[2][1<< ...
- HDU 1074 (状态压缩DP)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1074 题目大意:有N个作业(N<=15),每个作业需耗时,有一个截止期限.超期多少天就要扣多少 ...
- poj1185 状态压缩经典题
状态压缩的好题,直接求会爆内存,先把所有可能的状态求出来存在stk里,然后f[i][k][t]表示i行状态为t,i-1状态为k,由i-1状态来推出i状态即可 注意要打好边际条件的状态,并且某个可行状态 ...
- hdu 4739(状态压缩)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4739 思路:状态压缩. #include<iostream> #include<cs ...
- HDU 3341 状态压缩DP+AC自动机
题目大意: 调整基因的顺序,希望使得最后得到的基因包含有最多的匹配串基因,使得所能达到的智商最高 这里很明显要用状态压缩当前AC自动机上点使用了基因的情况所能达到的最优状态 我最开始对于状态的保存是, ...
- HDU 2553 状态压缩
N皇后问题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
随机推荐
- 10 signs you’re dating the wrong person
10 signs you’re dating the wrong person10个迹象表明TA不是你的真心人 Do you have any exes who were so awful ...
- iOS开发--邮箱,电话号码,身份证正则表达式验证
//邮箱 + (BOOL) validateEmail:(NSString *)email { NSString *emailRegex = @"[A-Z0-9a-z._%+-]+@ ...
- 面向 Java 开发人员的 Ajax: 构建动态的 Java 应用程序
面向 Java 开发人员的 Ajax: 构建动态的 Java 应用程序 Ajax 为更好的 Web 应用程序铺平了道路 在 Web 应用程序开发中,页面重载循环是最大的一个使用障碍,对于 Java™ ...
- JavaWeb笔记——下载文件
核心内容是两个头一个流 > 头:Content-Type:你传递给客户端的文件是什么MIME类型,例如:image/pjpeg * 通过文件名称调用ServletCont ...
- Linux命令-free
显示系统内存使用情况 free [-m / -g / -h] [root@localhost test]# free -m total used free shared buff/cache ava ...
- 爬虫Larbin解析(二)——sequencer()
分析的函数: void sequencer() //位置:larbin-2.6.3/src/fetch/sequencer.ccvoid sequencer() { bool testPriority ...
- Servlet如何实现修改后不重启服务器而生效
只需在apache-tomcat-8.0.0-RC10\conf\servlet.xml中修改相关设置: 在<Host name="localhost" appBase ...
- SeaJS 学习
什么是系统 在生活和工作中,我们会接触到大量系统:自然界生态系统.计算机操作系统.软件办公系统,还有教育系统.金融系统.网络系统.理论系统等等.究竟什么是系统呢? 来看下维基百科的解释: 系统泛指由一 ...
- 英语学习APP—百词斩
英语学习APP-百词斩 1.简介: 百词斩是由成都超有爱科技有限公司针对英语学习开发的一款"图背单词软件".软件为每一个单词提供了趣味的配图和例句,让记单词成为一种乐趣. 百词斩覆 ...
- Python学习之类
class Person: def __init__(self, name): self.name = name def sayHi(self): print('Hello, my name is'+ ...