传送门

题目大意

在一条直线上有$N$个球和$N+1$个洞,每两个球之间有一个洞,每两个洞之间有一个球,最左端和最右端都是洞,其中产生的$2N$个间隔满足从左到右是等差数列。你每次随机选择一个未被推进洞的球,将它随机向左或向右推动直到遇见一个洞,这时求会滚进洞内填满这个洞,接下来的球会正常从这个洞上方经过,显而易见不会有球撞到球或走出边界的情况,求所有任一方案所有球移动距离的期望。

题解

人类智慧题

将题目转化为有$2N$个区间,每次可以拿走$2$个相邻的端点并获得端点距离的贡献

考虑移动一次后剩下的$2N-2$个区间,单独考虑每一个区间,假设第$1$个区间,设首项为$X$,公差为$K$。

若我们拿走$2N$个区间中的第$1$个,则第一个区间会从$X$增加为$X+2K$,即长度变成了原序列中的第$3$个区间。

若我们拿走$2N$个区间中的第$2$个,则第一个区间会从$X$增加为$3X+3K$,即长度变成了原序列中的前$3$个区间。

其余情况第一个区间不变,则第一个区间期望增加$\frac{2X+5K}{2N}$。

同理,发现每个区间变化的期望会形成一个等差数列,那么$2N-2$个区间仍然能构成一个等差数列。

我们只要不断维护这一等差数列,维护首项末项公差,每次对答案的贡献是首项与末项的平均数。

#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#define LL long long
#define DB double
#define M 400020
using namespace std;
int read(){
int nm=0,fh=1; char cw=getchar();
for(;!isdigit(cw);cw=getchar()) if(cw=='-') fh=-fh;
for(;isdigit(cw);cw=getchar()) nm=nm*10+(cw-'0');
return nm*fh;
}
LL n,tot,d[M];
DB ans,fs,ed,k,dt;
int main(){
n=read(),fs=read(),k=read();
ed=fs+k*(n*2-1);
for(int i=(n<<1);i;i-=2){
ans+=((fs+ed)/2.0);
fs+=(fs*2+k*5)/(i*1.0); dt;
ed+=dt=(ed*2-k*5)/(i*1.0); dt;
if(i>2) k=(ed-fs)/((i-2)*1.0-1.0);
}
printf("%.17lf\n",ans);
return 0;
}

最新文章

  1. WPF 后台读取样式文件
  2. IE6-8下自定义标签的表现
  3. Linux Linux程序练习八
  4. SGU438 The Glorious Karlutka River =)(最大流)
  5. [转]使用maven镜像
  6. linux安装mysql出现Could NOT find Curses (missing CURSES_LIBRARY CURSES_INCLUDE_PATH),提示解决方法
  7. Asynchronously with NSURLConnection
  8. Linux系统管理技术手册——第6章 添加新用户
  9. Mobile Matrices
  10. MySQL 服务器变量 数据操作DML-视图
  11. 线段树练习 3&amp;&amp;P3372 【模板】线段树 1
  12. SpringMVC中日期格式的转换
  13. MyBaits集合的嵌套 Select 查询
  14. Swagger结合mustache模板生成后台接口代码、以及前后台建模代码
  15. 05-java学习-循环结构
  16. 【环境变量】Linux 下三种方式设置环境变量
  17. XEvent--基础
  18. node中一个基本的HTTP客户端向本地的HTTP服务器发送数据
  19. Coins and Queries(map迭代器+贪心)
  20. Win32环境下代码注入与API钩子的实现(转)

热门文章

  1. Android:日常学习笔记(8)———探究UI开发(5)
  2. yii 2 局部关闭 CSRF 拦截
  3. php……流程
  4. HBase基本知识介绍及典型案例分析
  5. .ssh中的文件的分别意义
  6. linux中搭建docker
  7. Qt浅谈之二十六图片滑动效果
  8. jQuery图片下滑切换焦点图
  9. R/Bioconductor包的下载和安装,升级
  10. php flock 使用实例