http://acm.hdu.edu.cn/showproblem.php?pid=5045

给出N个人做M道题的正确率,每道题只能由一个人做出,并且当所有人都做出来且仅做出一道题时,做过题的人才可以继续做题,求最大期望。

n最大值是10,想到用状压

状压dp

  1. #include <cstdio>
  2. #include <cstdlib>
  3. #include <cmath>
  4. #include <cstring>
  5. #include <string>
  6. #include <queue>
  7. #include <vector>
  8. #include<set>
  9. #include <iostream>
  10. #include <algorithm>
  11. using namespace std;
  12. #define RD(x) scanf("%d",&x)
  13. #define RD2(x,y) scanf("%d%d",&x,&y)
  14. #define clr0(x) memset(x,0,sizeof(x))
  15. typedef long long LL;
  16. double dp[1005][1<<10];
  17. int n,m;
  18. double p[12][1005];
  19. int main()
  20. {
  21. int T;
  22. scanf("%d",&T);
  23. int iCase = 0;
  24. while(T--){
  25. iCase++;
  26. RD2(n,m);
  27. for(int i = 0;i < n;i++){
  28. for(int j = 0;j < m;++j){
  29. scanf("%lf",&p[i][j]);
  30. }
  31. }
  32.  
  33. double ans = 0;
  34. int sum = 1<<n;
  35. for(int i = 0;i <= m;++i)
  36. for(int j = 0;j < sum;++j)
  37. dp[i][j] = -1;
  38. dp[0][0] = 0;
  39. for(int i = 0;i < m;++i)
  40. for(int j = 0;j < sum;++j){
  41. if(0 > dp[i][j])
  42. continue;
  43. for(int k = 0;k < n;++k){
  44. if( ((1<<k) & j) == 0){
  45. int st = (1<<k) | j;
  46. if(st + 1 == sum)
  47. st = 0;
  48. dp[i+1][st] = max(dp[i+1][st],dp[i][j] + p[k][i]);
  49. }
  50. }
  51. }
  52. for(int i = 0;i < sum;++i){
  53. ans = max(ans,dp[m][i]);
  54. }
  55. printf("Case #%d: %.5lf\n",iCase,ans);
  56. }
  57. return 0;
  58. }

hdu 5045 N个人做M道题的正确率的更多相关文章

  1. HDU 5045 DP+状压

    2014 ACM/ICPC Asia Regional Shanghai Online 给出N个人做M道题的正确率,每道题仅仅能由一个人做出,而且当全部人都做出来且仅做出一道题时,做过题的人才干够继续 ...

  2. HDU 5045 Contest

    pid=5045">主题链接~~> 做题感悟:比赛时这题后来才写的,有点小尴尬.两个人商议着写写了非常久才写出来,I want to Powerful ,I believe me ...

  3. HDU 5045 5047 5050 5053(上海网络赛E,F,I,L)

    HDU 5045 5047 5050 5053 太菜了,名额差点没保住.吓尿..赶紧开刷树链抛分 5045:状压DP.压缩10个人.因为两个人不能差2以上,所以能够用01表示 5047:推推公式就可以 ...

  4. HDU 5045

    http://acm.hdu.edu.cn/showproblem.php?pid=5045 题意:n个学生m道题,一个n*m的矩阵代表第n个学生解第m题AC的概率,任意两学生做题数差距不能大于1,问 ...

  5. hdu - 5045 - Contest(国家压缩dp)

    意甲冠军:N个人M通过主打歌有自己的期望,每个问题发送人玩.它不能超过随机播放的次数1,追求最大业绩预期 (1 ≤ N ≤ 10,1 ≤ M ≤ 1000). 主题链接:pid=5045" ...

  6. HDU 2016.11.12 做题感想

    细数一下这两天做过的值得总结的一些题Orz...... HDU 2571 简单dp,但是一开始WA了一发.原因很简单:没有考虑仔细. 如果指向该点的所有点权值都为负数,那就错了(我一开始默认初始值为0 ...

  7. HDU 5045(Contest-费用流)[template:费用流]

    Contest Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total Submi ...

  8. [ACM] hdu 5045 Contest (减少国家Dp)

    Contest Problem Description In the ACM International Collegiate Programming Contest, each team consi ...

  9. HDU 5045 状压DP 上海网赛

    比赛的时候想的是把n个n个的题目进行状压 但这样不能讲究顺序,当时精神面貌也不好,真是挫死了 其实此题的另一个角度就是一个n个数的排列,如果我对n个人进行状压,外面套一个按题目循序渐进的大循环,那么, ...

随机推荐

  1. 吴裕雄 数据挖掘与分析案例实战(10)——KNN模型的应用

    # 导入第三方包import pandas as pd # 导入数据Knowledge = pd.read_excel(r'F:\\python_Data_analysis_and_mining\\1 ...

  2. IntelliJ IDEA教程

    http://www.jetbrains.com/help/idea/meet-intellij-idea.html

  3. EasyUI 删除

    <script type="text/javascript"> <!-- js --> /*================================ ...

  4. ArrayList LinkList比较

    1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构.      2.对于随机访问get和set,ArrayList优于LinkedList,因为ArrayLi ...

  5. 【校招面试 之 C/C++】第31题 C++ 11新特性(二)之nullptr关键字

    1. 引入nullptr的原因 引入nullptr的原因,这个要从NULL说起.对于C和C++程序员来说,一定不会对NULL感到陌生.但是C和C++中的NULL却不等价.NULL表示指针不指向任何对象 ...

  6. C#中int? 转换为 int 型

    用 “ var a= zongfen.Score;”

  7. Linq select 语法

    文档:https://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b 1.可以对查询出来的结果做一些转换,下面的例子在数组中查找以"B&q ...

  8. sqlserver数据库维护常用sql

    1.说明:创建数据库 CREATE DATABASE database-name 2.说明:删除数据库 drop database dbname 3.说明:备份sql server --- 创建 备份 ...

  9. 使用PHP-GTK编写一个windows桌面应用程序

    PHP-GTK的下载地址:http://gtk.php.net/download.php?language=en-US, 猿哥选择了最新版本(beta版),可能有人会问我们为啥不选最新的stable版 ...

  10. ubuntu 开机自动挂载nfs服务器上的home分区

    通过‘fstab’也可以配置 NFS 和 SMB 的共享目录.由于涉及到的可选项很重要,并且需要了解一些协议的工作情况,您得先阅读 Samba 和 NFS . 基本语法和本地介质相差不是很多.条目中的 ...