题意:
有n个人进行m次比赛,每次比赛有一个排名,最后的排名是把所有排名都加起来然后找到比自己的分数绝对小的人数加一就是最终排名。

给了其中一个人的所有比赛的名次。求这个人最终排名的期望。

思路:

渣渣的第一道概率DP...弱渣。

dp[i][j]代表进行了i轮比赛之后得分为j的人数的期望,可以知道dp[i][j]来自于dp[i-1][j-m...j-1]的期望的人数乘以概率。这里就是前缀和,用树状数组进行优化...

但是要注意,转移的时候一定要排除已经知道的名次的影响,不能用已知名次来转移...

这题卡了好多天...终于开窍...

#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
double tree[];
double dp[];
int me[];//目标选手每场比赛的名次
int n,m;
int ss;//目标选手的名次和
double findans(int tar)
{
double sum=;
while(tar>)
{
sum+=tree[tar];
tar-=tar&(-tar);
}
return sum;
}
void updat(int tar,double num)
{
while(tar<ss)
{
tree[tar]+=num;
tar+=tar&(-tar);
}
}
int main()
{
scanf("%d%d",&n,&m);
memset(dp,,sizeof(dp));
memset(tree,,sizeof(tree));
ss=;
for(int i=;i<=n;i++)
{
scanf("%d",&me[i]);
ss+=me[i];
}
if(m==)
{printf("1.0000000000000000\n");return ;}
for(int j=;j<=m;j++)
{
dp[j]=;
}
dp[me[]]=;
for(int j=;j<ss;j++)
{
updat(j,dp[j]);
}
for(int i=;i<=n;i++)
{
memset(dp,,sizeof(dp));
for(int j=i;j<ss;j++)
{
int k;
dp[j]+=findans(j-)/(m-);
k=j-m-;
if(k>=i-)
dp[j]-=findans(k)/(m-);
if(j-i+>=me[i])
{
dp[j]-=findans(j-me[i])/(m-);
if(j-me[i]->=i-)
{
dp[j]+=findans(j-me[i]-)/(m-);
}
}
}
memset(tree,,sizeof(tree));
for(int j=i;j<ss;j++)
{
updat(j,dp[j]);
}
}
printf("%.16lf\n",findans(ss-)+);
}

CodeForces 602E【概率DP】【树状数组优化】的更多相关文章

  1. Codeforces 909 C. Python Indentation (DP+树状数组优化)

    题目链接:Python Indentation 题意: Python是没有大括号来标明语句块的,而是用严格的缩进来体现.现在有一种简化版的Python,只有两种语句: (1)'s'语句:Simple ...

  2. 2015南阳CCPC C - The Battle of Chibi DP树状数组优化

    C - The Battle of Chibi Description Cao Cao made up a big army and was going to invade the whole Sou ...

  3. 【eJOI2020】考试(dp & 树状数组优化)

    Description \(n\) 个正整数排成一列,每个位置 \(i\) 有一个初始值 \(A_i\) 以及目标值 \(B_i\). 一次操作可以选定一个区间 \([l, r]\),并将区间内所有数 ...

  4. bzoj 3594: [Scoi2014]方伯伯的玉米田 dp树状数组优化

    3594: [Scoi2014]方伯伯的玉米田 Time Limit: 60 Sec  Memory Limit: 128 MBSubmit: 314  Solved: 132[Submit][Sta ...

  5. FZU2236 第十四个目标 dp+树状数组优化

    分析:这种题烂大街,n^2,然后数据结构优化下到nlogn,离散化 #include <cstdio> #include <cstring> #include <queu ...

  6. Codeforces 909C Python Indentation:树状数组优化dp

    题目链接:http://codeforces.com/contest/909/problem/C 题意: Python是没有大括号来标明语句块的,而是用严格的缩进来体现. 现在有一种简化版的Pytho ...

  7. Codeforces 946G Almost Increasing Array (树状数组优化DP)

    题目链接   Educational Codeforces Round 39 Problem G 题意  给定一个序列,求把他变成Almost Increasing Array需要改变的最小元素个数. ...

  8. Codeforces 629D Babaei and Birthday Cake(树状数组优化dp)

    题意: 线段树做法 分析: 因为每次都是在当前位置的前缀区间查询最大值,所以可以直接用树状数组优化.比线段树快了12ms~ 代码: #include<cstdio> #include< ...

  9. CodeForces - 597C Subsequences 【DP + 树状数组】

    题目链接 http://codeforces.com/problemset/problem/597/C 题意 给出一个n 一个 k 求 n 个数中 长度为k的上升子序列 有多少个 思路 刚开始就是想用 ...

  10. BZOJ3594: [Scoi2014]方伯伯的玉米田【二维树状数组优化DP】

    Description 方伯伯在自己的农田边散步,他突然发现田里的一排玉米非常的不美. 这排玉米一共有N株,它们的高度参差不齐. 方伯伯认为单调不下降序列很美,所以他决定先把一些玉米拔高,再把破坏美感 ...

随机推荐

  1. redis操作

    测试环境redis操作 cd /export/servers/redis-2.8.9/src/./redis-cli -n 0 keys keys(pattern):返回满足给定pattern的所有k ...

  2. git基本使用

    说明:当前在自己的分支:self:远端开发分支:dev. 1. 基本命令: git status git add . git commit -m 'modify' //从远端dev拉取 git pul ...

  3. Hive(二):windows hive ODBC 安装

    针对Windows 32位和64位的系统对应有多个版本的 Hive ODBC Connector, 在安装的过程中,版本必须完全匹配(即:32位的 connector 只能在32位的系统运行,64位的 ...

  4. My second "last working day"

    时间真快,转眼硕士毕业已经快8年了. 今天是我的第二个last working day.也是我即将结束在外企工作的节点. 说来,毕业的时候,找工作,在确定了最后要去的单位之前,手头已经拿过了10家单位 ...

  5. OpenSSL 双向认证

    在使用OpenSSL进行SSL双向认证时,需要在服务器和客户端配置如下接口函数: SSL_CTX_set_verify(SSL_CTX* ctx,int mode,int (*verify_callb ...

  6. 程序员书单_sshi框架篇

    Struts2权威指南完整版 http://download.csdn.net/detail/shenzhq1980/9103955 精通struts.基于MVC的.java.web设计与开发http ...

  7. ios外包公司——技术分享:IOS开发教程

        iOS入门培训,适合已经有C/C++/Java/C#基础的人学习.   本大仙主讲,总共4讲(第4讲尚在制作中),这仅仅是iOS开发的入门而已.学完本教程,应该已经足够你自学并开发app了. ...

  8. php xdebug xampp eclipse

    Eclipse配置 一:配置workspace 打开Eclipse for PHP Developers,需要设置workspace,这个必须设置到C:\xampp\htdocs目录,否则待会无法进行 ...

  9. php定时执行脚本

    php定时执行脚本 ignore_user_abort(); // run script. in background set_time_limit(0); // run script. foreve ...

  10. Linux删除包含特殊符号文件名的文件

    今天发现机器上有一文件名为 ~~test 的文件名,欲删除之 ,报错查了下, 发现如下解决方法 假设Linux系统中有一个文件名叫“-test”.如果用户想删除它,按照一般的删除方法在命令行中输入“r ...