ZOJ 3471 Most Powerful (状压DP,经典)
2015-10-08 09:56
232 查看
题意:
有n个原子,每当两个原子碰撞时就会产生能量,并且消耗其中一个原子。已知每两个原子碰撞时消耗其中指定一个原子所产生的能量,问最多能产生多少能量?
思路:
一开始以为是找一个有序序列,使得能量最大,但是一个原子可能一直和别的原子碰撞且留到最后,所以序列是不行的。
我们只需要知道消耗的是谁就行了,而不需要管到底是谁碰撞到这个被消耗的原子,那么状态转移就更方便了,每次找到两个还没有碰撞的,碰掉其中1个,然后转移。
AC代码
有n个原子,每当两个原子碰撞时就会产生能量,并且消耗其中一个原子。已知每两个原子碰撞时消耗其中指定一个原子所产生的能量,问最多能产生多少能量?
思路:
一开始以为是找一个有序序列,使得能量最大,但是一个原子可能一直和别的原子碰撞且留到最后,所以序列是不行的。
我们只需要知道消耗的是谁就行了,而不需要管到底是谁碰撞到这个被消耗的原子,那么状态转移就更方便了,每次找到两个还没有碰撞的,碰掉其中1个,然后转移。
//#include <bits/stdc++.h> #include <iostream> #include <cstdio> #include <cstring> #include <cmath> #include <deque> #include <map> #include <algorithm> #include <vector> #include <iostream> #define pii pair<int,int> #define INF 0x3f3f3f3f #define LL long long #define ULL unsigned long long using namespace std; const double PI = acos(-1.0); const int N=11; int g , dp[1<<10]; int cal(int n) { memset(dp,0,sizeof(dp)); dp[0]=0; for(int s=0; s<(1<<n); s++) { for(int i=1; i<=n; i++) { if( s&(1<<i-1) ) continue; for(int j=1; j<=n; j++) //炸掉j { if(i==j) continue; if( s&(1<<j-1) ) continue; dp[s|(1<<j-1)]=max(dp[s|(1<<j-1)],dp[s]+g[i][j] ); } } } int ans=-10086; for(int i=1; i<(1<<n); i++) ans=max(ans, dp[i]); return ans; } int main() { //freopen("input.txt","r",stdin); int n; while(scanf("%d",&n),n) { memset(g,0,sizeof(g)); for(int i=1; i<=n; i++) for(int j=1; j<=n; j++) scanf("%d",&g[i][j]); printf("%d\n",cal(n)); } return 0; }
AC代码
相关文章推荐
- XAMPP+Mantis安装步骤
- jdk1.7 windows
- ATL opengl
- Binary Search Tree Iterator 解答
- Dynamics CRM Import Solution Attribute Display Name description is null or empty
- DG相关查询
- cocos 游戏移植到 Windows10 之路 -- 环境搭建
- 实用的java代码片段
- Dynamics CRM Import Solution Attribute Display Name description is null or empty
- Dynamics CRM Import Solution Attribute Display Name description is null or empty
- Dynamics CRM Import Solution Attribute Display Name description is null or empty
- 正则表达式 学习小结
- 零基础免费搭建个人博客-hexo+github
- iOS开发-捕获程序崩溃日志
- Code First 迁移更新数据库
- Android 自定义对话框
- React Native 初探(iOS)
- iOS_开发_工具_mac下的brew安装方法
- 10 种机器学习算法的要点(附 Python 和 R 代码)
- 详谈 Jquery Ajax 异步处理Json数据.