CodeForces 235B Let's Play Osu!(概率dp)
2016-06-15 13:11
309 查看
题意:给出一个ox序列,每一段连续的o的得分是o的数量的平方,现在给出每一个位置为o的概率,问得分的期望。
思路:首先这道题要将每一个位置分开来看,计算他们对于总体期望的贡献才可以,如果暴力dp的话O(n2)的复杂度时间无法承受。
考虑一段长度为n的连续序列o…o,总共的得分是n2,可以看成是由每个o贡献1分以及任意一对o(可以不相邻,于是共有C2n组)贡献2分组成的,这个性质反过来证明很容易,但是想了好久没想懂是怎么来的。。。。。官方题解里也说的不清楚
个人观点是可以把n2写成(1+...+1)n然后分解这个式子,所以每个位置的贡献就是自己本身和与任意其他位置的组合数量。
知道了这个性质以后,后面就比较好做了,假设当前位置为j,那么j对总体的贡献就是j为1的贡献加上j与其他所有位置配对的贡献,这一步可以用dp来做,所以最后的答案就可以得到了。
思路:首先这道题要将每一个位置分开来看,计算他们对于总体期望的贡献才可以,如果暴力dp的话O(n2)的复杂度时间无法承受。
考虑一段长度为n的连续序列o…o,总共的得分是n2,可以看成是由每个o贡献1分以及任意一对o(可以不相邻,于是共有C2n组)贡献2分组成的,这个性质反过来证明很容易,但是想了好久没想懂是怎么来的。。。。。官方题解里也说的不清楚
个人观点是可以把n2写成(1+...+1)n然后分解这个式子,所以每个位置的贡献就是自己本身和与任意其他位置的组合数量。
知道了这个性质以后,后面就比较好做了,假设当前位置为j,那么j对总体的贡献就是j为1的贡献加上j与其他所有位置配对的贡献,这一步可以用dp来做,所以最后的答案就可以得到了。
#include <bits/stdc++.h> #define eps 1e-6 #define LL long long #define pii pair<int, int> #define pb push_back #define mp make_pair //#pragma comment(linker, "/STACK:1024000000,1024000000") using namespace std; const int MAXN = 5000000; //const int MOD = 1e9+7; //const int INF = 0x3f3f3f3f; int n; double dp[MAXN], p[MAXN], ans; int main() { //freopen("input.txt", "r", stdin); scanf("%d", &n); for (int i = 1; i <= n; i++) scanf("%lf", &p[i]); for (int i = 1; i <= n; i++) { dp[i] = (dp[i-1]+p[i-1])*p[i]; ans += dp[i]*2 + p[i]; } printf("%.9f", ans); return 0; }
相关文章推荐
- Codeforces Round #197 (Div. 2)
- Codeforces Round #198 (Div. 1)
- Codeforces 405E Codeforces Round #238 (Div. 2)E
- Codeforces 407C Codeforces Round #239 (Div. 1)C
- CodeForces 449A - Jzzhu and Chocolate
- CodeForces 449 B. Jzzhu and Cities
- codeforces 618C. Constellation
- Codeforces Round #349 (Div. 2) - C
- Codeforces Round #265 (Div. 2)
- Codeforces #310 div2 C. Case of Matryoshkas
- 状态压缩DP codeforces 244 Problem C. The Brand New Function 和 codeforces 165 E. Compatible Numbers
- codeforces 16 Problem E fish
- Codeforces Round332 部分题解
- sgu495
- CodeForces 603A_Alternative Thinking (DP)
- CodeForces 602B_Approximating a Constant Range_DP
- Codeforces round #247 for Div. 2
- Codeforces Round #246 (Div. 2)
- Codeforces #264(div 2)D.Gargari and Permutations
- Codeforces Round #236 (Div. 2)------A,B