博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
agc007C - Pushing Balls(期望 等差数列)
阅读量:5286 次
发布时间:2019-06-14

本文共 897 字,大约阅读时间需要 2 分钟。

题意

翻译来自

Sol

又是一道神仙题。。

我开始的思路是枚举空位,但是还是不能做,GG

标算过于神仙,其中一些细节我也理解不了

题目给出的实际是一个首项为$d$,公差为$x$的等差数列

$sum = 2dn + \frac{2n(2n - 1)x}{2}$

此时的期望为$\frac{sum}{2n}$

考虑修改之后会有那些值发生改变

$d' = \frac{(2n - 2)d + d + 2x + 3d + 3x)}{2n}$(考虑第一个位置怎么变)

$sum' = \frac{d + (d + x) + (2n - 2)x + d + (2n - 1) x + d}{2n}$

$x' = \frac{sum -2nd}{n(2n - 1)}$

不断推下去即可

#include
using namespace std;long double N, d1, x, ans;int main() { cin >> N >> d1 >> x; for(int i = N; i >= 1; i--) { long double s = d1 * 2 * N + N * (2 * N - 1) * x; ans += s / 2 / N; s = s - (4 * d1 + 4 * N * x - 2 * x) / 2 / N; d1 = ((2 * N - 2) * d1 + d1 + 2 * x + 3 * d1 + 3 * x) / 2 / N; N--; x = (s - 2 * N * d1) / N / (2 * N - 1); // if(i > 990) printf("%.10lf\n", (double)x); } printf("%.15lf", (double)ans); return 0;}

转载于:https://www.cnblogs.com/zwfymqz/p/9707414.html

你可能感兴趣的文章
Ubuntu下配置安装telnet server
查看>>
Codeforces 235 E Number Challenge
查看>>
ubuntu 常见命令整理
查看>>
EJBCA安装教程+postgresql+wildfly10
查看>>
(五十四)涂鸦的实现和截图的保存
查看>>
配置EditPlus使其可以编译运行java程序
查看>>
java中的占位符\t\n\r\f
查看>>
MySQL通过frm 和 ibd 恢复数据过程
查看>>
SRS源码——Listener
查看>>
Java面向对象抽象类案例分析
查看>>
对SPI、IIC、IIS、UART、CAN、SDIO、GPIO的解释
查看>>
Thymeleaf模板格式化LocalDatetime时间格式
查看>>
庖丁解“学生信息管理系统”
查看>>
Pyltp使用
查看>>
其他ip无法访问Yii的gii,配置ip就可以
查看>>
php做的一个简易爬虫
查看>>
x的x次幂的值为10,求x的近似值
查看>>
jquery获取html元素的绝对位置和相对位置的方法
查看>>
ios中webservice报文的拼接
查看>>
Power BI 报告的评论服务支持移动设备
查看>>