hdu----(5045)Contest(数位dp)
Contest
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 220 Accepted Submission(s): 88
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
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 .
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.
2 3
0.6 0.3 0.4
0.3 0.7 0.9
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
const int maxn=1050l
double dp[maxn][maxn];
double a[][maxn];
int main(){
int cas,n,m;
scanf("%d",&cas);
for(int w=;w<=cas;w++){
scanf("%d%d",&n,&m);
for(int i=;i<=;i++){
for(int j=;j<=m;j++){
dp[i][j]=-;
}
}
dp[][]=0.0;
for(int i=;i<=n;i++){
for(int j=;j<=m;j++){
scanf("%lf",&a[i][j]);
}
}
int tol=(<<n)-;
double ans=0.0;
for(int j=;j<=m;j++){
for(int i=;i<tol;i++){
for(int k=;k<=n;k++){
int tt=<<(k-);
if(dp[i][j-]<)continue; if(tt&i)continue;
int pos=i|tt;
if(pos==tol)pos=;
dp[pos][j]=max(dp[pos][j],dp[i][j-]+a[k][j]);
if(j==m)ans=max(ans,dp[pos][j]);
}
}
}
printf("Case #%d: %.5lf\n",w,ans);
}
return ;
}
hdu----(5045)Contest(数位dp)的更多相关文章
- Bomb HDU - 3555 (数位DP)
Bomb HDU - 3555 (数位DP) The counter-terrorists found a time bomb in the dust. But this time the terro ...
- HDU(3555),数位DP
题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=3555 Bomb Time Limit: 2000/1000 MS (Java/Others ...
- HDU 2089 简单数位dp
1.HDU 2089 不要62 简单数位dp 2.总结:看了题解才敲出来的,还是好弱.. #include<iostream> #include<cstring> #i ...
- HDU(4734),数位DP
题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=4734 F(x) Time Limit: 1000/500 MS (Java/Others) ...
- HDU 3555 Bomb 数位dp
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3555 Bomb Time Limit: 2000/1000 MS (Java/Others) Mem ...
- Hdu 4734 【数位DP】.cpp
题意: 我们定义十进制数x的权值为f(x) = a(n)*2^(n-1)+a(n-1)*2(n-2)+...a(2)*2+a(1)*1,a(i)表示十进制数x中第i位的数字. 题目给出a,b,求出0~ ...
- HDU 6148 (数位DP)
### HDU 6148 题目链接 ### 题目大意: 众所周知,度度熊非常喜欢数字. 它最近发明了一种新的数字:Valley Number,像山谷一样的数字. 当一个数字,从左到右依次看过去数字没有 ...
- hdu 3652 【数位dp】
hdu 3652 题意:求1到n中包含'13'('13'不一定连续)且能被13整除的数的个数. 这是我第一道比较了能看懂的数位dp.定义状态dp[pos][res][sta]表示处理到第pos位,模的 ...
- HDU 3652 B-number(数位DP)
题目链接 学习大神的数位DP模版. #include <iostream> #include <cstdio> #include <cstring> using n ...
- HDU 3555 Bomb 数位DP 入门
给出n,问所有[0,n]区间内的数中,不含有49的数的个数 数位dp,记忆化搜索 dfs(int pos,bool pre,bool flag,bool e) pos:当前要枚举的位置 pre:当前要 ...
随机推荐
- block 实现原理详解(一)
对于大多数人来讲,block内部到底是怎样实现的呢?我们可以借助clang将其编译成为c++的代码,就可以看出,block到底是什么东西, 先来看这样一个问题, <!-- lang: cpp - ...
- C#窗体->>随机四则运算(计算表达式)
用户需求: 程序能接收用户输入的整数答案,并判断对错程序结束时,统计出答对.答错的题目数量.补充说明:0——10的整数是随机生成的用户可以选择四则运算中的一种用户可以结束程序的运行,并显示统计结果.在 ...
- 学习Berkeley DB- 入门
1 导言 首先,我们要了解Berkeley DB的一些基本特性,在IBM的开发网站上有篇文章对其有比较清晰的介绍: 这篇文章讲到了BDB的设计思想和核心数据结构.以及数据访问算法:并有常用函数使用范例 ...
- hdu 3033 I love sneakers! 分组背包
I love sneakers! Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- kafka单节点部署无法访问问题解决
场景:在笔记本安装了一台虚拟机, 在本地的虚拟机上部署了一个kafka服务: 写了一个测试程序,在笔记本上运行测试程序,访问虚拟机上的kafka,报如下异常: 2015-01-15 09:33:26 ...
- 详解.NET异步
在说到异步前,先来理一下几个容易混淆的概念,并行.多线程.异步. 并行,一般指并行计算,是说同一时刻有多条指令同时被执行,这些指令可能执行于同一CPU的多核上,或者多个CPU上,或者多个物理主机甚至多 ...
- DOM综合案例、SAX解析、StAX解析、DOM4J解析
今日大纲 1.DOM技术对xml的增删操作 2.使用DOM技术完成联系人管理 3.SAX和StAX解析 4.DOM4J解析 5.XPATH介绍 1.DOM的增删操作 1.1.DOM的增加操作 /* * ...
- redis问题
phalcon 在读取数据的时候如果说reids数据库没有连接成功的话,则会显示一下错误:
- HDU 1003 Max Sum 解题报告
题目大意:求一串数字中,几个连续数字加起来最大值,并确定起始和最末的位置. 思路:这是一题DP题,但是可以用尺取法来做.我一开始不会,也是看了某大神的代码,然后有人告诉我这是尺取法,现在会了. //尺 ...
- 【51nod】1376 最长递增子序列的数量
数组A包含N个整数(可能包含相同的值).设S为A的子序列且S中的元素是递增的,则S为A的递增子序列.如果S的长度是所有递增子序列中最长的,则称S为A的最长递增子序列(LIS).A的LIS可能有很多个. ...