Codeforces Gym 101190 (NEERC 2016) F. Foreign Postcards (dp + 期望)
来源:互联网 发布:宜人贷淘宝验证不了 编辑:程序博客网 时间:2024/05/21 10:42
题意
- 对于一叠 n 张卡片,随机取前 k 张
- 若取到的 k 张的第一张为
W
,则 k 张卡片的状态全部翻转。 - 将 k 张卡片在桌面上展示
- 若一叠卡片仍有剩余,则继续上述操作
问最后桌面上为 W
的卡片的期望?
解题思路
首先计算对于第 i 张卡片,其为 k 张中的第一张的概率,依次为 1,
令 dp[i][0]
表示第 i 张卡片不翻的概率,dp[i][1]
表示第 i 张卡片翻转的概率,则 dp[i][0]+dp[i][1] = 1
。
状态转移比较容易:
令第 i 张为首张的概率为 p
- 若第 i 张为
W
,则其不翻的概率为dp[i][0] = (1-p) * dp[i-1][0]
- 若第 i 张为
C
,则其不翻的概率为dp[i][0] = p + (1-p) * dp[i-1][0]
- 第 i 张翻转的概率为
dp[i][1] = 1 - dp[i][0]
统计每张最终为 W
的概率和即为问题期望
代码
#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>#include<fstream>using namespace std;const int N = 1e6 + 10;double dp[N][2];int main(){ freopen("foreign.in", "r", stdin); freopen("foreign.out", "w", stdout); string s; double p, ans = 0.0; cin>>s; dp[0][0] = s[0] == 'C' ? 1:0; dp[0][1] = s[0] == 'C' ? 0:1; for(int i=1;i<s.size();i++) { p = 1.0 / (s.size()-i+1); dp[i][0] = (s[i] == 'C' ? p : 0) + (1-p) * dp[i-1][0]; dp[i][1] = 1 - dp[i][0]; ans += (s[i] == 'C' ? dp[i][1] : dp[i][0]); } printf("%.10lf\n", ans);}
阅读全文
0 0
- Codeforces Gym 101190 (NEERC 2016) F. Foreign Postcards (dp + 期望)
- Gym 101190F Foreign Postcards
- Foreign Postcards Gym
- Codeforces Gym 101190 (NEERC 2016) A. Abbreviation
- Codeforces Gym 101190 (NEERC 2016) J. Jenga Boom
- Codeforces Gym 101190 NEERC 2016 B. Binary Code
- [树形DP 费用流手动增广] Codeforces Gym 101190 NEERC 16 M. Mole Tunnels
- codeforces Ilya Muromets 2014 NEERC Southern Subregional Contest F dp
- codeforces gym 2016-2017 NEERC, Moscow Subregional K. Knights of the Old Republic 最小生成树+dp
- Codeforces Gym 101190 (NEERC 2016) E. Expect to Wait (扫描线)
- Codeforces Gym 101190 (NEERC 2016) H. Hard Refactoring (模拟 + 树状数组)
- [物理 杂题] Codeforces Gym 101190 NEERC 16 J. Jenga Boom
- [博弈论] Codeforces Gym 101190 NEERC 16 G. Game on Graph
- [杂题] Codeforces Gym 101190 NEERC 16 K. Kids Designing Kids
- [构造] Codeforces Gym 101190 NEERC 16 C. Cactus Construction
- [杂题] Codeforces Gym 101190 NEERC 16 L. List of Primes
- Codeforces Gym 101174 D. Dinner Bet (期望 + DP)
- ACM ICPC 2008–2009, NEERC, Problem F Fenwick Tree(找规律,打表) Codeforces Gym 100623F
- jQuery对象和javascript的对象的转化
- spring原理
- 开启动画用start
- 利用notifyDataSetChanged()方法实现启动活动之后更新 ListView
- GitHub学习之旅 之 HelloWorld
- Codeforces Gym 101190 (NEERC 2016) F. Foreign Postcards (dp + 期望)
- 【pg_rman】备份GIN索引bug
- 数据结构 最小生成树 Kruskal算法
- python环境变量设置
- Codeforces Gym 101190 (NEERC 2016) H. Hard Refactoring (模拟 + 树状数组)
- 乱序字符串
- 数据结构 最小生成树 Prim算法
- UESTC 1654 肆虐的病毒 博弈DP
- POJ 1000 水题