CSU 1009 抛硬币(贪心)
来源:互联网 发布:足球球员数据统计表格 编辑:程序博客网 时间:2024/05/01 04:34
1009: 抛硬币
Time Limit: 1 Sec Memory Limit: 128 Mb Submitted: 1104 Solved: 346Description
James得到了一堆有趣的硬币,于是决定用这些硬币跟朋友们玩个小游戏。在一个N行M列的表格上,每一个第i行第j列的格子上都放有一枚James的硬币,抛该硬币正面朝上的概率为Pij,所有抛硬币事件两两之间是相互独立的。
现在,玩家在M列硬币中,从每一列里各选择1枚,共M枚,构成一组。如此重复选择N组出来,且保证被选择过的硬币不能再选。选好组之后,每组的M枚硬币各抛一次,如果都是正面朝上,则该组胜利,总分赢得1分;否则该组失败,总分不加也不减。请问,如果让你自行选择硬币的分组,游戏总得分的数学期望的最大值是多少?
Input
输入有多组数据。每组数据第一行为N和M,1≤N≤100,1≤M≤10,以空格分隔。接下来有N行,每行M个小数,表示表格中对应的Pij。
输入以N=M=0结束,这组数据不输出结果。
Output
对于每组数据,输出对应游戏总得分的数学期望的最大值,四舍五入精确至4位小数。每组数据的输出占一行。
Sample Input
2 31.0 1.0 1.00.5 0.4 0.30 0
Sample Output
1.0600
Hint
Source
中南大学第五届大学生程序设计竞赛
#include<bits/stdc++.h>using namespace std;#define inf 0x3f3f3fconst int N = 100 + 10;struct node{ int u; double v;} a[N][N];int main(){ int m,n; while(scanf("%d%d",&n,&m)==2,n||m) { memset(a,0,sizeof(a)); for(int i=0; i<n; i++) for(int j=0; j<m; j++) scanf("%lf",&a[i][j].v); double ans=0; int ii,jj; for(int k=0; k<n; k++) { double sum=1; for(int j=0; j<m; j++) { double tmp=0; for(int i=0; i<n; i++) { if(!a[i][j].u&&a[i][j].v>tmp) { ii=i,jj=j; tmp=a[i][j].v; } } a[ii][jj].u=1; sum*=tmp; } ans+=sum; } printf("%.4f\n",ans); }}
0 0
- CSU 1009 抛硬币(贪心)
- CSU 1009 抛硬币
- 翻硬币(贪心)
- 硬币问题(贪心)
- 翻硬币(贪心)
- 硬币问题 (贪心)
- 翻硬币(贪心)
- 硬币找零(贪心算法)
- 蓝桥杯:翻硬币(贪心)
- 篮桥杯,翻硬币 (贪心)
- 蓝桥杯-翻硬币(贪心)
- 贪心算法(硬币问题)
- CSU 1408: 种植树苗(贪心啊 )
- CSU 1093 Caps Lock (贪心+模拟)
- CSU 1922:Irony Ring(贪心算法)
- CSU 1971:安排座位(贪心)
- Algorithm学习笔记 --- 翻硬币(贪心)
- 039_硬币问题(贪心)
- C++第四次实验:编程输出星号图
- mac键盘对应说明(小知识)
- jQuery基础-选择器
- 【Algothrim】 集合竞价
- jQuery中使用Ajax获取JSON格式数据示例代码
- CSU 1009 抛硬币(贪心)
- -bash: wget: command not found的两种解决方法
- C++作业4
- 顺时针打印矩阵
- Android 隐藏软键盘、进出动画、图片进行缩放
- 在Ubuntu 14.04 上安装 Xmind
- DatePicker隐藏“天”选择
- 微信小程序 图片宽度自动
- int float double BigDecimal