AGC007C Pushing Balls
题意:\(N\)个坑,\(N+1\)个球,相间分布,距离为以\(d_1\)为首项,\(x\)为公差的等差数列。对于每次操作,随机选择一个未入坑的球,随机选择向左或向右,掉入第一个没有球的坑,定义一次操作的价值为球移动的距离。求\(N\)次操作的期望总价值。
分析:这是一道很好的期望题

其实\(idea\)还是比较妙的。
考虑转化问题:有\(2N+1\)个物品,每次随机删去相邻两个,求距离和的期望。
然后我们发现,若干次操作后段长仍为等差数列。
这个感性认知一下吧(能感觉到的请忽略这一段),初始时对于每个长为\(d_1+kx\)的段,删去两点后该段长度为\(3d_1+3kx\),那么所有非边界的两点删去后的长度为\(3d_1, 3d_1+3x,\dots,3d_1+3(2n-1)x\),加上任意两点删去可能性相当,所以第一次操作后仍是等差数列。然后后面肯定也是了对吧。
然后我们计算每一次操作后(当前有\(2N\)个点)的首项与公差的期望。
首项有三种可能:
1、删除编号为1、2的点,首项为\(d_1+2x\)
2、删除编号为2、3的点,首项为\(3d_1+3x\)
3、其他情况首项不变为\(d_1\)
根据全期望公式得到
\(d_1^{'}=\frac{1}{2n}*(d_1+2x)+\frac{1}{2n}*(3d_1+3x)+\frac{2n-2}{2n}*d_1\)
\(=\frac{(2n+2)d_1+5x}{2n}\)
公差有两种可能:
1、该段长不变为\(x\)
2、该段被取走为\(3x\)
\(x^{'}=\frac{(n+2)x}{2n}\)
每次计算答案即可
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
double n, a, x, ans=0.0;
cin >> n >> a >> x;
for (; n; n--)
{
ans+=a+(2*n-1)/2*x;
a=((2*n+2)*a+5*x)/(2*n);
x=(n+2)*x/n;
}
printf("%.10f\n",ans);
return 0;
}
AGC007C Pushing Balls的更多相关文章
- agc007C - Pushing Balls(期望 等差数列)
题意 题目链接 翻译来自神仙yyb Sol 又是一道神仙题.. 我开始的思路是枚举空位,但是还是不能做,GG 标算过于神仙,其中一些细节我也理解不了 题目给出的实际是一个首项为$d$,公差为$x$的等 ...
- AGC007C Pushing Balls —— 期望的神题
Problem Link 题意: 序列上按顺序交错有 \(n\) 个球和 \(n+1\) 个洞,即 \(hole_1,ball_1,hole_2,ball_2,\dots,ball_n,hole_{n ...
- Agc007_C Pushing Balls
传送门 题目大意 在一条直线上有$N$个球和$N+1$个洞,每两个球之间有一个洞,每两个洞之间有一个球,最左端和最右端都是洞,其中产生的$2N$个间隔满足从左到右是等差数列.你每次随机选择一个未被推进 ...
- AtCoder刷题记录
构造题都是神仙题 /kk ARC066C Addition and Subtraction Hard 首先要发现两个性质: 加号右边不会有括号:显然,有括号也可以被删去,答案不变. \(op_i\)和 ...
- 贪心/构造/DP 杂题选做Ⅲ
颓!颓!颓!(bushi 前传: 贪心/构造/DP 杂题选做 贪心/构造/DP 杂题选做Ⅱ 51. CF758E Broken Tree 讲个笑话,这道题是 11.3 模拟赛的 T2,模拟赛里那道题的 ...
- AtCoder Grand Contest 007
AtCoder Grand Contest 007 A - Shik and Stone 翻译 见洛谷 题解 傻逼玩意 #include<cstdio> int n,m,tot;char ...
- AtCoder Grand Contest
一句话题解 QwQ主要是因为这篇文章写的有点长……有时候要找某一个题可能不是很好找,所以写了这个东西. 具体的题意.题解和代码可以再往下翻._(:з」∠)_ AGC 001 C:枚举中点/中边. D: ...
- Atcoder训练计划
争取三天做完一套吧,太简单的就写一句话题解吧(其实也没多少会做的). 自己做出来的在前面用*标记 agc007 *A - Shik and Stone 暴力dfs即可,直接判断个数 *B - Cons ...
- A_G_C_007
AGC007 A Shik and Stone 我是沙比这都能蛙一发 https://agc007.contest.atcoder.jp/submissions/7946110 B Construct ...
随机推荐
- js解决弹窗问题实现班级跳转DIV示例
js解决弹窗问题实现班级跳转DIV 1.js代码如下: <%--实现班级跳转DIV--%> <div id="displayClassDiv" style=&q ...
- OpenCv dnn module -实时图像分类
配置环境:OpenCv3.4, vs2013(x64),Win7.用OpenCv dnn module 实时检测摄像头,视频和图像的分类示例原代码为:https://docs.opencv.org/3 ...
- Cardboard Talk02 Accelerometer
操作系统:Windows8.1 显卡:Nivida GTX965M 开发工具:Android studio 3.0.0 | Cardboard 1.0 在深入讨论具体实现之前,有必要了解一下Andro ...
- jsp脚本语法
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"% ...
- python's object model
[python's object model] 1.object.__init__(self[, ...]) 如果subclass没有实现__init__,那么python类在实例化的时 ...
- istview android:cacheColorHint,android:listSelector属性作用(转)
原文ListView是常用的显示控件,默认背景是和系统窗口一样的透明色,如果给ListView加上背景图片,或者背景颜色时,滚动时listView会黑掉, 原因是,滚动时,列表里面的view重绘时,用 ...
- Android开发之通过包管理器获取安装应用信息
最近在自己写一个APP,有一个模块需要获取手机应用的一些信息.坑还是有,但都基本踩过了,自己把他实现了出来,实现方法还是很需要掌握的.底部弹出的对话框中四个选项的实现不多做说明,主要讲讲如何获取这些安 ...
- java并发特性:原子性、可见性、有序性
要想并发程序正确地执行,必须要保证原子性.可见性以及有序性.只要有一个没有被保证,就有可能会导致程序运行不正确. 1.原子性(Atomicity) 原子性是指在一个操作中就是cpu不可以在中途暂停然后 ...
- 44. Wildcard Matching (String; DP, Back-Track)
Implement wildcard pattern matching with support for '?' and '*'. '?' Matches any single character. ...
- 21-py3 发邮件
Python3 SMTP发送邮件 SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式. p ...