hdu 5045 - Contest(2014 ACM/ICPC Asia Regional Shanghai Online )概率dp

原创 2015年07月10日 11:24:41

Contest
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 974 Accepted Submission(s): 416

Problem Description
In the ACM International Collegiate Programming Contest, each team consist of three students. And the teams are given 5 hours to solve between 8 and 12 programming problems.

On Mars, there is programming contest, too. Each team consist of N students. The teams are given M hours to solve M programming problems. Each team can use only one computer, but they can’t cooperate to solve a problem. At the beginning of the ith hour, they will get the ith programming problem. They must choose a student to solve this problem and others go out to have a rest. The chosen student will spend an hour time to program this problem. At the end of this hour, he must submit his program. This program is then run on test data and can’t modify any more.

Now, you have to help a team to find a strategy to maximize the expected number of correctly solved problems.

For each problem, each student has a certain probability that correct solve. If the ith student solve the jth problem, the probability of correct solve is Pij .

At any time, the different between any two students’ programming time is not more than 1 hour. For example, if there are 3 students and there are 5 problems. The strategy {1,2,3,1,2}, {1,3,2,2,3} or {2,1,3,3,1} are all legal. But {1,1,3,2,3},{3,1,3,1,2} and {1,2,3,1,1} are all illegal.

You should find a strategy to maximize the expected number of correctly solved problems, if you have know all probability

Input
The first line of the input is T (1 ≤ T ≤ 20), which stands for the number of test cases you need to solve.

The first line of each case contains two integers N ,M (1 ≤ N ≤ 10,1 ≤ M ≤ 1000),denoting the number of students and programming problem, respectively.

The next N lines, each lines contains M real numbers between 0 and 1 , the jth number in the ith line is Pij .

Output
For each test case, print a line “Case #t: ”(without quotes, t means the index of the test case) at the beginning. Then a single real number means the maximal expected number of correctly solved problems if this team follow the best strategy, to five digits after the decimal point. Look at the output for sample input for details.

Sample Input

1
2 3
0.6 0.3 0.4
0.3 0.7 0.9

Sample Output

Case #1: 2.20000
题意:n个学生m道题,一个n*m的矩阵代表第n个学生解第m题AC的概率,任意两学生做题数差距不能大于1,问AC所有题目概率的最大值
思路:dp[i][j]表示前i个题,学生做题数的状态为j的最大概率,因为最大只能查一题,那么当j全1时,就清空j变成0

#include<iostream>
#include<cstdio>
#include<string>
#include<cstring>
#include<vector>
#include<cmath>
#include<queue>
#include<stack>
#include<map>
#include<set>
#include<algorithm>
using namespace std;
const int maxn=11;
const int maxm=1050;
int N,M;
double P[maxn][maxm];
double dp[maxm][maxm];
int main()
{
    int T,cas=1;
    scanf("%d",&T);
    while(T--)
    {
        scanf("%d%d",&N,&M);
        for(int i=0;i<N;i++)
            for(int j=0;j<M;j++)scanf("%lf",&P[i][j]);
        for(int i=0;i<maxm;i++)
            for(int j=0;j<maxm;j++)dp[i][j]=-1.0;
        dp[0][0]=0;
        int S=(1<<N);
        for(int i=0;i<M;i++)
        {
            for(int j=0;j<S;j++)
            {
                if(dp[i][j]<0)continue;
                for(int k=0;k<N;k++)
                {
                    if(!(j&(1<<k)))
                    {
                        int tmp=(j|(1<<k));
                        if(tmp==(S-1))tmp=0;
                        dp[i+1][tmp]=max(dp[i+1][tmp],dp[i][j]+P[k][i]);
                    }
                }
            }
        }
        double ans=0;
        for(int i=0;i<S;i++)
            ans=max(ans,dp[M][i]);
        printf("Case #%d: %.5lf\n",cas++,ans);
    }
    return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

2014ACM/ICPC亚洲区鞍山赛区现场赛题解报告

2014ACM/ICPC亚洲区鞍山赛区现场赛题解报告
  • queuelovestack
  • queuelovestack
  • 2016年10月28日 13:02
  • 1041

ACM-概率dp之入门

ACM-概率dp
  • u011787119
  • u011787119
  • 2014年10月16日 16:58
  • 3334

HDU 2048 神、上帝以及老天爷(错排)

神、上帝以及老天爷  Description HDU 2006'10 ACM contest的颁奖晚会隆重开始了!  为了活跃气氛,组织者举行了一个别开生面、奖品丰厚的抽奖活动,这个活动的具体...
  • pengkexiaohuai
  • pengkexiaohuai
  • 2015年08月03日 15:25
  • 441

HDU 5045 Contest (2014上海网络赛)

这个题是一个DP。  有状态压缩的问题。   以前只是听说过 zhuantai
  • Shimmer_
  • Shimmer_
  • 2014年09月28日 20:36
  • 464

HDU 5001 Walk 求从任意点出发任意走不经过某个点的概率 概率dp 2014 ACM/ICPC Asia Regional Anshan Online

HDU 5001 Walk 求从任意点出发任意走不经过某个点的概率 概率dp 2014 ACM/ICPC Asia Regional Anshan Online 题意: 给定n个点m条边的无向图 问:...
  • qq574857122
  • qq574857122
  • 2014年09月13日 17:23
  • 1296

2017ACM-ICPC全国邀请赛(陕西)

没想到大二下学期又能有幸的参加一场全国邀请赛,跟各位大佬齐聚一堂享受被虐的快感。 =========================日常水==========================弱校抱着拿...
  • QuanQqqqq
  • QuanQqqqq
  • 2017年05月24日 09:59
  • 2372

概率论之概率dp与期望的极限求解

http://acm.hust.edu.cn/vjudge/problem/35396 题意:小明玩儿纸牌,每盘获胜的概率为p。小明只有当该晚的获胜局数严格大于p时才回去高兴的睡觉。小明每晚最多只能...
  • qq_30241305
  • qq_30241305
  • 2016年09月06日 09:22
  • 846

2014ACM亚洲区域赛上海站总结

这次  真的很惨。。。。 什么都不想说  从来没有如此低落过   感觉之前做的全都白费了。。。 等冷静下来 再写吧...
  • u011699990
  • u011699990
  • 2014年12月09日 08:43
  • 829

2016 acm/icpc 沈阳现场赛题解(5道题,更新ing)

5948.Thickest Burger(签到题)http://acm.hdu.edu.cn/showproblem.php?pid=5948题目大意:给你A和B,问2A+B和2B+A谁大?题目分析:...
  • cmershen
  • cmershen
  • 2016年11月21日 21:59
  • 1991

动态规划练习题:概率DP总结,求解数学期望或概率的题目

来源:http://www.cnblogs.com/kuangbin/archive/2012/10/02/2710606.html 概率DP主要用于求解期望、概率等题目。 转移方程有时候比较灵活...
  • NOI2015
  • NOI2015
  • 2015年03月15日 16:20
  • 593
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:hdu 5045 - Contest(2014 ACM/ICPC Asia Regional Shanghai Online )概率dp
举报原因:
原因补充:

(最多只允许输入30个字)