Codeforces 601C Kleofáš and the n-thlon(dp)
2015-12-03 21:33
417 查看
题目链接:Codeforces 601C Kleofáš and the n-thlon
解题思路
dp[i][j]表示到第i场比赛时,得分为j的人数期望。dp[i][j] = sum { dp[i-1][j-x] ~ dp[i-1][j-x] | 1 ≤ x ≤ m && x != rank[i] }代码
#include <cstdio> #include <cstring> #include <algorithm> using namespace std; const int maxn = 2 * 1e5 + 5; int N, M, X[105]; double dp[2][maxn]; int main () { scanf("%d%d", &N, &M); for (int i = 1; i <= N; i++) scanf("%d", &X[i]); if (M == 1) printf("%.10lf\n", 1.0); else { int nw = 0, nx = 1, s = 0; memset(dp[nx], 0, sizeof(dp[nx])); dp[nx][0] = M - 1; for (int i = 1; i <= N; i++) { swap(nw, nx); memset(dp[nx], 0, sizeof(dp[nx])); for (int j = 0; j <= i * M; j++) { double p = dp[nw][j] / (M-1); dp[nx][j+1] += p; dp[nx][j+M+1] -= p; dp[nx][j + X[i]] -= p; dp[nx][j + X[i] + 1] += p; } for (int j = 1; j <= (i + 1) * M; j++) dp[nx][j] += dp[nx][j-1]; s += X[i]; } double ans = 0; for (int i = 0; i < s; i++) ans += dp[nx][i]; printf("%.10lf\n", ans + 1); } return 0; }
相关文章推荐
- 织梦首页php301重定向
- webrtc(一) agc
- TCP/IP协议 三次握手与四次挥手
- VS2010中VC9.0Runtime与VC10.0Runtime在win7上装不上
- 使用Java编写并运行Spark应用程序
- codeforces 604A Uncowed Forces
- Linux串口详解
- Linux安装telnet
- Hibernate Validator--创建自己的约束规则
- HTML静态网页:表格、表单
- POJ水题1008Maya Calendar
- 关于A*算法的研究
- 短信发送器
- SlidingMenu 常用属性介绍
- HDU 1027 全排列 (STL_permution)
- jQuery scrollTo
- Fibonacci 1
- 多媒体开发之rtmp---rtmp client 端的实现
- Android电话拨号器
- 奶牛的狂欢节