状压dp Most Powerful
来源:互联网 发布:怎么爬外卖商家数据 编辑:程序博客网 时间:2024/05/22 01:31
题目地址
题目大意:有N个原子,下面输入w[N][N]矩阵 i 行 j 列任意两个原子碰撞产生的能量,j消失,求产生的最大的能量
思路:dp[1<<N]表示状态i时的最大能量,dp[i]=dp[i-1<<j]+w[k][j];0<=k<N
这算是一个比较简单状压dp题,只有1维,状态转移方程也很简单,也是在老师给的课件上的原题、
代码:
#include<iostream>#include<stdio.h>#include<algorithm>#include<string.h>#include<math.h>#include<queue>#include<stack>using namespace std;int N,a[15][15],dp[1<<12];int main(){ int i,j,k,ans; while(~scanf("%d",&N)) { memset(dp,0,sizeof(dp)); if(N==0) break; for(i=1;i<=N;i++) for(j=1;j<=N;j++) scanf("%d",&a[i][j]); ans=1<<(N+1); for(i=0;i<ans;i++) { for(j=1;j<=N;j++) { int s=1<<j; if(i&s) continue; for(k=1;k<=N;k++) { if((i&1<<k)==0&&k!=j) dp[i+s]=max(dp[i+s],dp[i]+a[k][j]); } } } int aa=0; for(i=0;i<ans;i++) { aa=max(aa,dp[i]);} cout<<aa<<endl; }}
阅读全文
0 0
- 状压dp Most Powerful
- ZOJ3471---Most Powerful(状压dp)
- zoj3471 Most Powerful 状压dp
- zoj3471 Most Powerful 状压dp
- ZOJ 4257--Most Powerful(状压dp)
- Most Powerful - ZOJ 3471 状压dp
- ZOJ 3471 Most Powerful(状压DP)
- ZOJ 3471 Most Powerful(状压dp)
- ZOJ 3471 Most Powerful(状压DP)
- [ZOJ 3471] Most Powerful · 状压DP
- zoj 3471 Most Powerful 【状压DP】
- ZOJ 3471 Most Powerful(状压DP)
- ZOJ 3471 Most Powerful (状压DP)
- ZOJ 3471 Most Powerful (状压dp)
- [ZOJ] 4257 Most Powerful [状压DP]
- ZOJ 3471 Most Powerful 状压dp
- DP状态压缩:Most Powerful
- Most Powerful (状态dp)
- MATLAB神经网络
- 干货 | 30张相见恨晚的速查表
- 3
- 不务正业的杂谈三:LaTeX学习笔记(一)
- Linux 动态库使用
- 状压dp Most Powerful
- MATLAB神经网络43个案例分析
- 时间相减
- 机器学习十七:感知机
- 李航—统计学习方法
- delphi 各种时间类型之间的转换函数
- 未来20大科技发展趋势
- 机器学习二一:SMO算法
- java之数组小知识