题意:n个原子,两两相撞其中一个消失,产生能量,给出任意两原子相撞能产生的能量,求能产生的最大能量。

分析:dp[i]表示情况为i时产生的最大能量

  1. /*#include <map>
  2. #include <set>
  3. #include <list>
  4. #include <cmath>
  5. #include <queue>
  6. #include <stack>
  7. #include <cstdio>
  8. #include <vector>
  9. #include <string>
  10. #include <cctype>
  11. #include <complex>
  12. #include <cassert>
  13. #include <utility>
  14. #include <cstring>
  15. #include <cstdlib>
  16. #include <iostream>
  17. #include <algorithm>
  18. using namespace std;
  19. typedef pair<int,int> PII;
  20. typedef long long ll;
  21. #define lson l,m,rt<<1
  22. #define pi acos(-1.0)
  23. #define rson m+1,r,rt<<11
  24. #define All 1,N,1
  25. #define read freopen("in.txt", "r", stdin)
  26. const ll INFll = 0x3f3f3f3f3f3f3f3fLL;
  27. const int INF= 0x7ffffff;
  28. const int mod = 1000000007;
  29. int n,dp[2000],a[15][15];
  30. void solve(){
  31. memset(dp,0,sizeof(dp));
  32. for(int i=(1<<n)-1;i>0;--i){
  33. int maxv=0,m=i;
  34. for(int j=0;j<n;++j){
  35. if((m&1)==0){
  36. int maxp=0,t=i;
  37. for(int k=0;k<n;++k){
  38. if((t&1)&&a[k][j]>maxp)
  39. maxp=a[k][j];
  40. t>>=1;
  41. }
  42. if(dp[i^(1<<j)]+maxp>maxv)
  43. maxv=dp[i^(1<<j)]+maxp;
  44. }
  45. m>>=1;
  46. }
  47. dp[i]=maxv;
  48. }
  49. int maxpow=-1;
  50. for(int i=0;i<n;++i){
  51. if(maxpow<dp[(1<<i)])
  52. maxpow=dp[(1<<i)];
  53. //cout<<dp[(1<<i)]<<endl;
  54. }
  55. printf("%d\n",maxpow);
  56. }
  57. int main()
  58. {
  59. while(~scanf("%d",&n)){
  60. if(n==0)break;
  61. for(int i=0;i<n;++i)
  62. for(int j=0;j<n;++j)
  63. scanf("%d",&a[i][j]);
  64. solve();
  65. }
  66. return 0;
  67. }*/
  68. //
  69. #include <map>
  70. #include <set>
  71. #include <list>
  72. #include <cmath>
  73. #include <queue>
  74. #include <stack>
  75. #include <cstdio>
  76. #include <vector>
  77. #include <string>
  78. #include <cctype>
  79. #include <complex>
  80. #include <cassert>
  81. #include <utility>
  82. #include <cstring>
  83. #include <cstdlib>
  84. #include <iostream>
  85. #include <algorithm>
  86. using namespace std;
  87. typedef pair<int,int> PII;
  88. typedef long long ll;
  89. #define lson l,m,rt<<1
  90. #define pi acos(-1.0)
  91. #define rson m+1,r,rt<<11
  92. #define All 1,N,1
  93. #define read freopen("in.txt", "r", stdin)
  94. const ll INFll = 0x3f3f3f3f3f3f3f3fLL;
  95. const int INF= 0x7ffffff;
  96. const int mod = 1000000007;
  97. int dp[1100],n;
  98. int power[15][15];
  99. void solve(){
  100. memset(dp,0,sizeof(dp));
  101. int cas=(1<<n);
  102. for(int i=0;i<cas;++i)
  103. for(int j=0;j<n;++j){
  104. if((i&(1<<j)))continue;
  105. int maxv=-1;
  106. for(int k=0;k<n;++k)
  107. if((i&(1<<k))==0&&j!=k)
  108. dp[i|(1<<j)]=max(dp[i|(1<<j)],dp[i]+power[k][j]);
  109. }
  110. int maxv=-1;
  111. for(int i=0;i<cas;++i)
  112. maxv=max(maxv,dp[i]);
  113. printf("%d\n",maxv);
  114. }
  115. int main()
  116. {
  117. while(~scanf("%d",&n)){
  118. if(n==0)break;
  119. for(int i=0;i<n;++i)
  120. for(int j=0;j<n;++j)
  121. scanf("%d",&power[i][j]);
  122. solve();
  123. }
  124. return 0;
  125. }

  

Most Powerful(ZOJ 3471状压dp)的更多相关文章

  1. Problem Arrangement ZOJ - 3777(状压dp + 期望)

    ZOJ - 3777 就是一个入门状压dp期望 dp[i][j] 当前状态为i,分数为j时的情况数然后看代码 有注释 #include <iostream> #include <cs ...

  2. ZOJ 3306 状压dp

    转自:http://blog.csdn.net/a497406594/article/details/38442893 Kill the Monsters Time Limit: 7 Seconds ...

  3. ZOJ - 3777(状压dp)

    The 11th Zhejiang Provincial Collegiate Programming Contest is coming! As a problem setter, Edward i ...

  4. Survival(ZOJ 2297状压dp)

    题意:有n个怪,已知杀死第i个怪耗费的血和杀死怪恢复的血,和杀死boss耗的血,血量不能超过100,若过程中血小于0,则失败,问 是否能杀死boss(boss最后出现). 分析:就是求杀死n个怪后剩余 ...

  5. zoj 3812 状压dp

    转载:http://blog.csdn.net/qian99/article/details/39138329 题意:给出n个物品,每个物品有两种属性Wi,Ti,有q组查询,每组查询要求在n个物品中选 ...

  6. Long Dominoes(ZOJ 2563状压dp)

    题意:n*m方格用1*3的方格填充(不能重叠)求有多少种填充方法 分析:先想状态,但想来想去就是觉得不能覆盖所有情况,隔了一天,看看题解,原来要用三进制 0 表示横着放或竖放的最后一行,1表示竖放的中 ...

  7. Travel(HDU 4284状压dp)

    题意:给n个城市m条路的网图,pp在城市1有一定的钱,想游览这n个城市(包括1),到达一个城市要一定的花费,可以在城市工作赚钱,但前提有工作证(得到有一定的花费),没工作证不能在该城市工作,但可以走, ...

  8. 【状压dp】Most Powerful

    [ZOJ3471]Most Powerful Time Limit: 2 Seconds      Memory Limit: 65536 KB Recently, researchers on Ma ...

  9. ZOJ 3723 (浙大月赛)状压DP

    A了一整天~~~终于搞掉了. 真是血都A出来了. 题目意思很清楚,肯定是状压DP. 我们可以联系一下POJ 1185  炮兵阵地,经典的状压DP. 两道题的区别就在于,这道题的攻击是可以被X挡住的,而 ...

随机推荐

  1. Struts2 本是非单例的,与Spring集成就默认为单例

    1.Struts2本身action类是多例,此设计的原因在于本身action担任了数据载体,如果做成单例,则会便多用户数据受到影响: 2.当Struts2 与 spring整合时,Struts2的Ac ...

  2. lintcode : 二叉树的层次遍历

    题目 二叉树的层次遍历 给出一棵二叉树,返回其节点值的层次遍历(逐层从左往右访问) 样例 给一棵二叉树 {3,9,20,#,#,15,7} : 3 / \ 9 20 / \ 15 7 返回他的分层遍历 ...

  3. switch… case 语句的用法

    switch… case 语句的用法   public class Test7 { public static void main(String[] args) { int i=5; switch(i ...

  4. Tomcat就是个容器,一种软件

    1.tomcat就是一个容器而已,一个软件,运行在java虚拟机. 2.tomcat是一种能接收http协议的软件,java程序猿自己也可以写出http解析的服务器啊. 3.tomcat支持servl ...

  5. Delphi语言获得生命的原因和过程

    都说Anders Hejlsberg是Delphi语言的作者,前一阵仔细读了VCL源码,惊叹于它的巧夺天工,未免对编译器的作者有些不服气,觉得首功不是他.今天仔细想了想,还是觉得不服不行.以下是我的理 ...

  6. *windows下安装以及配置nginx

    1.从nginx官网下载相应的安装包. http://nginx.org/

  7. Spring中的mappingResources和mappingDirectoryLocations

    今天使用Spring+Hibernate进行事务管理,按照顺序也就是配置,DataSource,Sessionfactory,事务管理器以及拦截器. DateSource可以直接使用Hibernate ...

  8. Java API —— IO流小结

    练习题: 1.复制文本文件 package cn.itcast_01; import java.io.BufferedReader; import java.io.BufferedWriter; im ...

  9. QTP之对测试用例的自动化过程的分解

    第一部分:自动化一个测试用例 当你要开始自动化一个测试用例的时候,有一些重要的事情需要完成.当你完成所有这些事情的时候,测试脚本的自动化也随之完成. 在这里,我们将首先在大部分的自动化测试用例里找出所 ...

  10. Socket programming in C on Linux | tutorial

    TCP/IP socket programming This is a quick guide/tutorial to learning socket programming in C languag ...