HDU1565+状态压缩dp
简单的压缩状态
dp
/*
状态压缩dp
同hdu2167
利用滚动数组!!
*/
#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 binary[ maxn+ ];
int s[ <<(maxn) ];
//int sum[ maxn ][ 1<<maxn ];
//int dp[ maxn ][ 1<<maxn ];
int dp[][<<maxn];
int mat[ maxn ][ maxn ];
void init_binary(){
binary[] = ;
for( int i=;i<=;i++ ){
binary[i] = *binary[i-];
}
} int solve( int n ){
//memset( sum,0,sizeof( sum ) );
memset( dp,,sizeof( dp ) );
int cnt = ;
int N = (<<n);
for( int i=;i<N;i++ ){
if( ( (i<<)&i )== ){
s[ cnt++ ] = i;
}
}//保存合格的状态
//for( int i=0;i<n;i++ ){
//for( int j=0;j<cnt;j++ ){
//for( int k=0;k<n;k++ ){
//if( binary[k]&s[j] ){
//sum[ i ][ j ] += mat[ i ][ k ];
//}
//}
//}
//}
int ans = ;
for( int i=;i<cnt;i++ ){
int sum = ;
for( int j=;j<n;j++ ){
if( binary[j]&s[i] ){
sum += mat[][j];
}
}
dp[][i] = sum;
ans = max( ans,dp[][i] );
}
for( int i=;i<n;i++ ){
for( int j=;j<cnt;j++ ){
for( int k=;k<cnt;k++ ){
if( ( s[j]&s[k] )== ){
int sum = ;
for( int kk=;kk<n;kk++ ){
if( binary[kk]&s[j] ){
sum += mat[i][kk];
}
}
if( i%== ) dp[ ][ j ] = max( dp[][j],dp[][k]+sum );
else dp[ ][ j ] = max( dp[][j],dp[][k]+sum );
//dp[ i ][ j ] = max( dp[i][j],dp[i-1][k]+sum );
//dp[i][j] = max( dp[i][j],dp[i-1][k]+sum[i][j] );
}
}
ans = max( ans,max( dp[][j],dp[][j] ) );
}
}
return ans;
} int main(){
int n;
init_binary();
while( scanf("%d",&n)== ){
for( int i=;i<n;i++ ){
for( int j=;j<n;j++ ){
scanf("%d",&mat[i][j]);
}
}
int ans = solve( n );
printf("%d\n",ans);
}
return ;
}
HDU1565+状态压缩dp的更多相关文章
- HDU1565 方格取数(1)(状态压缩dp)
		
题目链接. 分析: 说这题是状态压缩dp,其实不是,怎么说呢,题目数据太水了,所以就过了.手动输入n=20的情况,超时.正解是网络流,不太会. A这题时有个细节错了,是dp[i][j]还是dp[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
		
题目描述 阿姆斯特朗回旋加速式阿姆斯特朗炮是一种非常厉害的武器,这种武器可以毁灭自身同行同列两个单位范围内的所有其他单位(其实就是十字型),听起来比红警里面的法国巨炮可是厉害多了.现在,零崎要在地图上 ...
 - 状态压缩dp问题
		
问题:Ignatius has just come back school from the 30th ACM/ICPC. Now he has a lot of homework to do. Ev ...
 - BZOJ-1226     学校食堂Dining       状态压缩DP
		
1226: [SDOI2009]学校食堂Dining Time Limit: 10 Sec Memory Limit: 259 MB Submit: 588 Solved: 360 [Submit][ ...
 - Marriage Ceremonies(状态压缩dp)
		
Marriage Ceremonies Time Limit:2000MS Memory Limit:32768KB 64bit IO Format:%lld & %llu ...
 
随机推荐
- [译]使用Babel和Browserify创建你的ES6项目
			
原文地址:Setting up an ES6 Project Using Babel and Browserify JavaScript的发展日新月异,ES6很快就要接管JS了.很多著名的框架像Ang ...
 - android 数据库的增删改查
			
主java package com.itheima.crud; import android.app.Activity; import android.content.Context; import ...
 - PERL 脚本
			
PERL: Practical Extraction and Report Language 参考文档 1.Perl 5 version 24.0 documentation
 - Qt学习总结-ui篇(二)
			
qccs定义圆角 border-radius:10px; 如果想给特定位置定义圆角,如: 左上角:border-left-top-radius:10px; 右下角色:border-right-bo ...
 - oracle 之路目录
			
oracle linux单机安装 oracle windows单机安装创建实例卡死解决办法 oracle rac安装 HPDL380G8平台11.2.0.3 RAC实施手册 pl-sql develo ...
 - Easyui 生成layout
			
Easyui 生成layout var $tabs; var $body; var $south; function appendLayout(title, href) { if (!$body) $ ...
 - httpc服务器错误类型大全
			
HTTP 400 - 请求无效HTTP 401.1 - 未授权:登录失败HTTP 401.2 - 未授权:服务器配置问题导致登录失败HTTP 401.3 - ACL 禁止访问资源HTTP 401.4 ...
 - slider jq小插件
			
html代码 <div class="r_list r_1" style="display:block;"> <div class=" ...
 - EditorLineEnds.ttr   受影响的D版本 Delphi 8-2010
			
http://stackoverflow.com/questions/25295980/delphi-2006-2010-error-cannot-create-file-c-users-admin- ...
 - [python] 字符串引用
			
%s str %d 整数 %f 浮点数 print('$%.03f' % 30.1777) >>>$30.178 #四舍五入 print( '%-5s %s %10s' % ('J ...