牛客小白月赛42 C 寒潭烟光

寒潭烟光

https://ac.nowcoder.com/acm/contest/11219/C

应该是前五题中最难的吧。

这个数据范围很大,我们必须使用单次操作 O(1)O(1) 的方法。

由于数列构成不唯一,我们可以构造数列 a=0,0,0,,n×F(x)a={0, 0, 0, ……,n×F(x)},放置 n1n-100 ,满足条件。

然后我们计算加入 x0x_0 后的数列的 F(a)F(a) 值。

序列 a=x0,0,0,0,,n×F(x)a′={x_0,0,0,0,……,n×F(x)},于是前缀和数组的总和为:

(n+1)×x0+n×fx(n + 1) × x_0 + n × fx

因为要取平均值,所以我们除以 n+1n+1

但是呢这么写好像会爆,我们变形一下式子。

答案相当于:(n+1)×x0+n×fxn+1=(n+1)×x0+(n+1)×fxfxn+1=x0fxfxn+1\frac{(n + 1) × x_0 + n × fx}{n+1}=\frac{(n + 1) × x_0 + (n+1) × fx-fx}{n+1}=x_0-fx-\frac{fx}{n+1}

这样就没事了。

代码。

全部评论
为什么直接((n+1)x0+n*Fx)/(n+1)不行啊QWQ
点赞 回复 分享
发布于 2021-12-17 23:20
算法学的不行高中数学还好的表示直接分母加1,分子在nf的基础上加上x0和n*x0就好了,因为后面的前缀和每一项都大x0
点赞 回复 分享
发布于 2021-12-17 21:50

相关推荐

重生我想学测开:嵌入式的问题,我准备入行京东外卖了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务