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

i从1到m依次更新,dp[i][j]表示更新到i题时,j表示每个人的答题状态,分别用0和1表示(因为每个人相差题数不能超过1),此是为1的人便不能再答题,当所有人都为1的时候,则每个人都置0。

#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std; double a[][],dp[][<<];
int n,m; int main()
{
int T;
scanf("%d",&T);
for(int x = ;x <= T;x++)
{
scanf("%d%d",&n,&m);
for(int i = ;i <= m;i++)
{
for(int j = ;j < (<<n);j++) dp[i][j] = -;
}
for(int i = ;i <= n;i++)
{
for(int j = ;j <= m;j++) scanf("%lf",&a[i][j]);
}
dp[][] = ;
for(int i = ;i < m;i++)
{
for(int j = ;j < (<<n);j++)
{
if(dp[i][j] < ) continue;
for(int k = ;k <= n;k++)
{
if((j & (<<(k-))) == )
{
int temp = j | (<<(k-));
if(temp == (<<n)-) temp = ;
dp[i+][temp] = max(dp[i+][temp],dp[i][j]+a[k][i+]);
}
}
}
}
double ans = -;
for(int i = ;i < (<<n);i++) ans = max(ans,dp[m][i]);
printf("Case #%d: %.5f\n",x,ans);
}
return ;
}

最新文章

  1. IOS lib(.a)库冲突解决办法
  2. poj2115-C Looooops(扩展欧几里德算法)
  3. JQuery[一] 中如何选中$(this)下面的子元素
  4. IEEE Floating Point Standard (IEEE754浮点数表示法标准)
  5. 通过预编译头文件来提高C++ Builder的编译速度
  6. 用JSON 和 Google 实现全文翻译
  7. HTML 5 学习 (1)
  8. LInux 下安装jdk
  9. Spoken English
  10. Android从无知到有知——NO.4
  11. 关于scrapy的piplines
  12. 【BZOJ4872】分手是祝愿(动态规划,数学期望)
  13. 关于LINUX里面查找,替换,编辑的一些用法
  14. 乐学习知选择--我的J2EE技术历程
  15. Refit在ASP.NET Core中的实践
  16. 超哥笔记 --nginx入门(6)
  17. python之路day01--变量
  18. 《JavaScript 高级程序设计》读书笔记一 简介
  19. 1006 Tick and Tick
  20. R 语言安装

热门文章

  1. 学海无涯-php
  2. 《图解机器学习-杉山将著》读书笔记---CH5
  3. PS/2的相关知识
  4. 深入理解协程(二):yield from实现异步协程
  5. Netty快速入门(06)Netty介绍
  6. 键盘优雅弹出与ios光标乱飘解决方案
  7. 借助 dp 公式去优化
  8. C++ 中的 unique 函数
  9. dubbo配置文件解读(1)
  10. 《ASP.NET Core 高性能系列》关于性能的闲聊