[TS-A1489][2013中国国家集训队第二次作业]抽奖[概率dp]

概率dp第一题,开始根本没搞懂,后来看了09年汤可因论文才基本搞懂,关键就是递推的时候做差比较一下,考虑新加入的情况对期望值的贡献,然后推推公式(好像还是不太会推qaq...)

 1 #include <bits/stdc++.h>
 2
 3 using namespace std;
 4
 5 int    n,m;
 6 long double    a[110000];
 7
 8 long double    POW(const long double t,int b)
 9 {
10     long double    r=1,base=t;
11     while(b)
12     {
13         if(b&1)r*=base;
14         base*=base;
15         b>>=1;
16     }
17     return r;
18 }
19
20 long double    Calc1()
21 {
22     long double    temp=0;
23     for(int i=1;i<=n;++i)temp+=a[i]*a[i];
24     return (double)m*(m-1)*temp+m;
25 }
26
27 long double    Calc2()
28 {
29     long double    temp=0;
30     for(int i=1;i<=n;++i)temp+=POW(1-a[i],m);
31     return (double)n-temp;
32 }
33
34 int main()
35 {
36     int    i;
37     int    Sum=0;
38     scanf("%d%d",&n,&m);
39     for(i=1;i<=n;++i)scanf("%Lf",&a[i]),Sum+=a[i];
40     for(i=1;i<=n;++i)a[i]=a[i]/Sum;
41     printf("%.2Lf\n%.2Lf\n",Calc1(),Calc2());
时间: 2024-08-25 00:39:17

[TS-A1489][2013中国国家集训队第二次作业]抽奖[概率dp]的相关文章

[tsA1490][2013中国国家集训队第二次作业]osu![概率dp+线段树+矩阵乘法]

这样的题解只能舔题解了,,,qaq 清橙资料里有.. 1 #include <iostream> 2 #include <cstdio> 3 #include <cstdlib> 4 #include <cstring> 5 #include <cmath> 6 #include <ctime> 7 #include <algorithm> 8 9 using namespace std; 10 11 struct Mat

[TS-A1486][2013中国国家集训队第二次作业]树[树的重心,点分治]

首先考虑暴力,可以枚举每两个点求lca进行计算,复杂度O(n^3logn),再考虑如果枚举每个点作为lca去枚举这个点的子树中的点复杂度会大幅下降,如果我们将每个点递归考虑,每次计算过这个点就把这个点删掉,那么如果每次删掉的点是当前子树的重心,枚举点对的复杂度就只有O(logn),对于每次查询答案在trie树中找到时间复杂度基本可视为O(1),最后在分治同时考虑“关键点”即可.总复杂度O(nlogn). 1 #include <iostream> 2 #include <algorith

[tsA1491][2013中国国家集训队第二次作业]家族[并查集]

m方枚举,并查集O(1)维护,傻逼题,,被自己吓死搞成神题了... 1 #include <bits/stdc++.h> 2 3 using namespace std; 4 5 struct tri { int x,y,z; bool operator<(const tri & temp)const { return z<temp.z; } }; 6 7 int n,m,k,Sum,Ans=0x7fffffff,a[1100],Size[1100],f[1100]; 8

[TS-A1505] [清橙2013中国国家集训队第二次作业] 树 [可持久化线段树,求树上路径第k大]

按Dfs序逐个插入点,建立可持久化线段树,每次查询即可,具体详见代码. 不知道为什么,代码慢的要死,, #include <iostream> #include <algorithm> #include <cstdio> #include <cstdlib> #include <cstring> #include <cmath> #include <ctime> #include <vector> using

&lt; &lt; &lt; 2013年国家集训队作业 &gt; &gt; &gt;

完成题数/总题数:  1道/37道 1.  A1504. Book(王迪): 数论+贪心   ★★☆

国家集训队2011]happiness(吴确)

1873. [国家集训队2011]happiness(吴确) ★★★   输入文件:nt2011_happiness.in   输出文件:nt2011_happiness.out   简单对比时间限制:1 s   内存限制:512 MB [试题来源] 2011中国国家集训队命题答辩 [问题描述] 高一一班的座位表是个n*m的矩阵,经过一个学期的相处,每个同学和前后左右相邻的同学互相成为了好朋友.这学期要分文理科了,每个同学对于选择文科与理科有着自己的喜悦值,而一对好朋友如果能同时选文科或者理科,

国家集训队2011 happiness

[试题来源] 2011中国国家集训队命题答辩 [问题描述] 高一一班的座位表是个n*m的矩阵,经过一个学期的相处,每个同学和前后左右相邻的同学互相成为了好朋友.这学期要分文理科了,每个同学对于选择文科与理科有着自己的喜悦值,而一对好朋友如果能同时选文科或者理科,那么他们又将收获一些喜悦值.作为计算机竞赛教练的scp大老板,想知道如何分配可以使得全班的喜悦值总和最大. [输入格式] 第一行两个正整数n,m.接下来是六个矩阵第一个矩阵为n行m列 此矩阵的第i行第j列的数字表示座位在第i行第j列的同学

[国家集训队2011]happiness(吴确) (最小割)

2017-08-09 19:03:49 [试题来源] 2011中国国家集训队命题答辩 [问题描述] 高一一班的座位表是个n*m的矩阵,经过一个学期的相处,每个同学和前后左右相邻的同学互相成为了好朋友.这学期要分文理科了,每个同学对于选择文科与理科有着自己的喜悦值,而一对好朋友如果能同时选文科或者理科,那么他们又将收获一些喜悦值.作为计算机竞赛教练的scp大老板,想知道如何分配可以使得全班的喜悦值总和最大. [输入格式] 第一行两个正整数n,m.接下来是六个矩阵第一个矩阵为n行m列 此矩阵的第i行

[国家集训队2010]小Z的袜子

★★★   输入文件:hose.in   输出文件:hose.out   简单对比 时间限制:1 s   内存限制:512 MB [题目描述] 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小Z再也无法忍受这恼人的找袜子过程,于是他决定听天由命…… 具体来说,小Z把这N只袜子从1到N编号,然后从编号L到R(L 尽管小Z并不在意两只袜子是不是完整的一双,甚至不在意两只袜子是否一左一右,他却很在意袜子的颜色,毕竟穿两只不同色的袜子会很尴尬. 你的任务便