2013 南京邀请赛 A play the dice 求概率


 1 /**
2 大意:给定一个色子,有n个面,每一个面上有一个数字,在其中的m个面上有特殊的颜色,当掷出的色子出现这m个颜色之一时,可以再掷一次。。求其最后的期望
3 思路:假设 期望为ans
4 ans = 1/n*(a[b[1]]+ans)+1/n*(a[b[2]]+ans)+....+1/n*(a[b[m]]+ans) +...+1/n*(a[k])....
5 ans = m/n*ans+1/n*(a[1]+a[2]+a[3]+...a[n])
6 ans = m/n*ans+sum/n
7 ans = sum/(n-m)
8 若sum =0 ----〉ans =0;
9 若n-m=0-----〉ans = inf
10 否则 ans = sum/(n-m)
11 学习之处:进行简单的推导。。自己还是欠缺
12 **/
13 #include <iostream>
14 #include <cstdio>
15 using namespace std;
16 double a,b;
17 double n,m;
18 int main()
19 {
20 while(scanf("%lf",&n)==1){
21 double sum =0;
22 for(int i=0;i<n;i++){
23 scanf("%lf",&a);
24 sum += a;
25 }
26 scanf("%lf",&m);
27 for(int i=0;i<m;i++)
28 scanf("%lf",&b);
29 if(sum==0){
30 printf("0.00\n");
31 continue;
32 }
33 if((n-m)==0){
34 printf("inf\n");
35 }else{
36 printf("%.2lf\n",sum/(n-m));
37 }
38 }
39 return 0;
40 }

2013 南京邀请赛 A play the dice 求概率

时间: 2024-11-05 21:27:30

2013 南京邀请赛 A play the dice 求概率的相关文章

hdu 4587 2013南京邀请赛B题/ / 求割点后连通分量数变形。

题意:求一个无向图的,去掉两个不同的点后最多有几个连通分量. 思路:枚举每个点,假设去掉该点,然后对图求割点后连通分量数,更新最大的即可.算法相对简单,但是注意几个细节: 1:原图可能不连通. 2:有的连通分量只有一个点,当舍去该点时候,连通分量-1: 复习求割点的好题! #include<iostream> #include<cstdio> #include<vector> using namespace std; int n,m; vector<vector&

2013 南京邀请赛 C count the carries

1 /** 2 大意: 给定区间(a,b), 将其转化为二进制 计算从a+(a+1)+(a+2)....+(a+b-1),一共有多少次进位 3 思路: 将(a,b)区间内的数,转化为二进制后,看其每一位一共有多少个1 4 可知最低位循环为2,第二位循环为4 5 ---〉 所以每一位的1的个数为 : 假设为第三位 (n-n%8)/8*8/2===>(n-n%8)/2 6 ------> 如果n%8 大于8/2 那么应该再加上 n%8-8/2 7 **/ 8 #include <iostre

2013 南京邀请赛 K题 yet another end of the world

1 /** 2 大意:给定一组x[],y[],z[] 确定有没有两个不同的x[i], x[j] 看是否存在一个ID使得 3 y[i]<=ID%x[i]<=z[i] 4 y[j]<=ID%x[j]<=z[j] 5 设ID%x[i] = a ID%x[j] = b 6 ===〉ID+x[i]*x=a, ID+x[j]*y = b; 7 两式相减得 x[j]*y - x[i]*x = b-a; 8 若是有解 就是(b-a)%gcd(x[i],x[j]) == 0 9 就是看b-a的范围内

2013 长沙邀请赛 ADEGH 题解

HDU 4565 So Easy! 类似fib的构造 设Fn = x + y*sqrt(b) 啪啦啪啦 #include <cstdio> #include <cstring> #include <vector> #include <cmath> #include <iostream> using namespace std; typedef vector<long long> vec; typedef vector<vec&g

A Computer Graphics Problem 4176 2013上海邀请赛

A Computer Graphics Problem Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 968    Accepted Submission(s): 688 Problem Description In this problem we talk about the study of Computer Graphics.

HDU 4652 Dice (概率DP)

Dice Problem Description You have a dice with m faces, each face contains a distinct number. We assume when we tossing the dice, each face will occur randomly and uniformly. Now you have T query to answer, each query has one of the following form: 0

hdu3076--ssworld VS DDD(概率dp第三弹,求概率)

ssworld VS DDD Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 1487    Accepted Submission(s): 304 Problem Description One day, sssworld and DDD play games together, but there are some special

HihoCoder - 1339 Dice Possibility(概率dp)

题意:求用N(1<=N<=100)个骰子掷出M(1<=M<=600)的概率 分析:直接求概率可能出现6^100次方,会爆精度.可以用一个数组dp[i][j]记录用i个骰子掷出j的概率.i为0时无论j是多少,概率都是0.i为1时,j从1-6的概率都是1/6.其余可以递推得到 dp[i][j]  = 0 (j<i || j>6*i),sigma(dp[i-1][max(0,j-k)])  (1<=k<=6) #include<stdio.h> #in

HDU 4588 Count The Carries (2013年南京邀请赛)

题目地址:HDU 4588 这题是学长跟我说的一道数位DP..然后我就按着数位DP去做的,倒是写出来了,但是一直TLE..后来用类似找规律的方法解出来了.. 首先这题其实就是求每位上总共有多少个1,然后不断从低位开始向高位进位. 方法是比如二进制为1010010的这个数,就可以拆成1000000+10000+10三个数,然后从0到111111就是0和1的一个全排序,那么每一位上的1的个数总和一定是占一半,然后首位+1,那么10000也可以这样算,然后累加起来就好了.但是还要注意的是,首位的1不只