hdu 1565 状态压缩DP
来源:互联网 发布:温泽三坐标编程视频 编辑:程序博客网 时间:2024/06/06 06:47
和点击打开链接这题很像,跑了2.8s,不知道那些0ms的怎么跑出来的,●rz
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;int dp[2][1<<20], prestatu;int num[22][22], N;int now, nowi;void DFS( int statu, int pos, int sum ){ if( pos > N ){ return; } dp[now][statu] = max( dp[now][statu], sum ); DFS( statu, pos + 1, sum ); int flag = 1; if( pos > 1 ){ if( statu & ( 1 << ( pos - 2 ) ) ){ flag = 0; } } if( prestatu & ( 1 << ( pos - 1 ) ) ){ flag = 0; } if( flag ){ dp[now][statu|(1<<(pos-1))] = max( dp[now][statu|(1<<(pos-1))], sum + num[nowi][pos] ); DFS( statu|(1<<(pos-1)), pos + 1, sum + num[nowi][pos] ); }}int main(){ while( scanf( "%d", &N ) != EOF ){ memset( dp, -1, sizeof( dp ) ); for( int i = 1; i <= N; i++ ){ for( int j = 1; j <= N; j++ ){ scanf( "%d", &num[i][j] ); } } dp[0][0] = 0; now = 1; for( int i = 1; i <= N; i++ ){ memset( dp[now], -1, ( 1 << 20 ) * sizeof( int ) ); nowi = i; for( int j = 0; j < ( 1 << N ); j++ ){ if( dp[now^1][j] != -1 ){ prestatu = j; DFS( 0, 1, dp[now^1][j] ); } } now ^= 1; } int ans = 0; for( int i = 0; i < ( 1 << N ); i++ ){ ans = max( ans, dp[now^1][i] ); } cout << ans << endl; } return 0;}
0 0
- hdu 1565 状态压缩 dp
- hdu 1565 状态压缩dp
- hdu 1565 状态压缩DP
- hdu 1565 状态压缩dp
- 【状态压缩dp】HDU
- hdu(3920)状态压缩+dp
- HDU 1074 状态压缩DP
- HDU 4049 状态压缩DP
- 【状态压缩DP】HDU 2167
- HDU 1074 状态压缩dp
- HDU 1074 (状态压缩DP)
- HDU 3362 (状态压缩DP)
- hdu 4539 状态压缩DP
- hdu 3182 状态压缩DP
- Hdu 3811 状态压缩 DP
- hdu 2167 状态压缩DP
- hdu 4539 状态压缩DP
- hdu 1074 状态压缩dp
- poj1011 stick(搜索,剪枝)
- 通过Nutch-655和urlmeta学习如何使用nutch插件
- Java NIO ByteBuffer读取文件
- 解决JSP中文乱码问题
- ceshi
- hdu 1565 状态压缩DP
- Android系统进程Zygote启动过程的源代码分析
- 我的第一款iOS App: 极简天气 1.0
- Windows Socket select函数使用
- Codeforces Round #120 (Div. 2) / 190D Non-Secret Cypher (计数&two pointers)
- 在Eclipse中从数据库表自动生成hibernate的java实体类
- android:scaleType="matrix"
- UVa 146 - ID Codes STL 排列
- log4j配置多个日志文件,将日志分类的配置样例log4j.properties