首页 > 其他分享 >「解题报告」[AGC007C] Pushing Balls

「解题报告」[AGC007C] Pushing Balls

时间:2023-09-05 20:44:28浏览次数:36  
标签:AGC007C Balls frac 题解 Pushing 问题 那么 2n 段距离

非常高级的题,但是感觉官方题解的做法和洛谷大部分题解的做法都并不很能说服我,感觉根据规律发现期望序列还是等差数列有点扯了。但是 zhylj 的题解的做法感觉很强啊,但是他题解后面的推导感觉好像有点问题。所以整出来这样一个做法,感觉还是很清楚的。


首先我们可以考虑将原问题转化成更简单的问题。类似于等差数列的求和法,我们可以将同样的问题反过来进行计算一遍,并且将这两次计算加和,这两个问题的答案显然是相等的。而根据期望的线性性,我们可以考虑每段距离的贡献,那么可以发现将两个问题中每段距离对应加和后得到的新问题的答案是相等的,而后者变成了每个位置距离均相等的更简单的问题。那么我们就只需要考虑每段距离都相等的情况(即 \(d=1,x=0\) 的情况)即可,最后将答案乘上 \(\frac{2d + (2n - 1) x}{2}\) 即可。

那么接下来考虑每段距离都相等怎么做。我们转化一下问题,将球与洞都看作元素排列成一个长度 \(2n+1\) 的序列,考虑其中的 \(2n\) 段距离。发现,每段距离正好对应着一种让球滚入洞中的方案。而若选择的这一段是中间的某一段,操作之后会使得相邻的三段合并成一整段;若选择的边缘的两段,则会使边缘的两个元素直接删除。

那么我们的问题可以重新描述成这样:有 \(2n\) 个数,每次随机选择一个数,若这个数在边缘,那么删除最边缘上两个数;否则将这个数相邻的三个数加和合并。问进行 \(n\) 次操作后,选择的数的总和的期望值。

我们可以发现这样一件事情:若进行合并操作,那么每个数被合并的概率都是相同的,即合并后新的数可能出现在 \(2n-2\) 个位置中的任意一个。那么这意味着,这 \(2n-2\) 段的期望长度也都是相同的。那么我们设 \(d_i\) 表示在进行 \(i\) 次操作后,每一段的期望长度是多少。那么有:

\[d_0 = 1, d_i = \frac{(2n'-1) d_{i - 1} + 3d_{i - 1}}{2n'} = \frac{n'+1}{n'} d_{i - 1} \]

\(n'\) 代表推之前还剩下多少个球,即 \(n - i + 1\)。

每一次推球期望距离显然就是 \(d_i\),那么答案就等于 \(\frac{2d + (2n - 1) x}{2} \sum_{i = 0}^{n - 1} d_i\)。可以直接递推计算,同时也可以推出 \(d_i\) 的通项公式再计算,易得 \(d_i = \frac{n + 1}{n + 1 - i}\)。

#include <bits/stdc++.h>
using namespace std;
int n, d, x;
int main() {
    scanf("%d%d%d", &n, &d, &x);
    double k = (2 * d + (2 * n - 1) * x) / 2.0;
    double a = 0;
    for (int i = 0; i <= n - 1; i++) a += 1.0 * (n + 1) / (n + 1 - i);
    printf("%.12lf\n", k * a);
    return 0;
}

标签:AGC007C,Balls,frac,题解,Pushing,问题,那么,2n,段距离
From: https://www.cnblogs.com/apjifengc/p/17680734.html

相关文章

  • Educational Codeforces Round 151 (Rated for Div. 2)E. Boxes and Balls(数学,动态规
    题目链接:https://codeforces.com/contest/1845/problem/E 题意: 给定长度为n且只含0和1的数组,你可以进行以下操作: 交换相邻的0和1; 给正整数k,问经过k次操作后,会有多少种本质不同的结果; 分析: 如果1比0多,我们可以把他们取反(让0比1多,结果是一样的) 设计状态dp[i][j......
  • 题解 P7971【[KSN2021] Colouring Balls】
    postedon2022-10-0819:07:28|under题解|sourceproblem交互库有一个长为\(n\)的颜色序列,你可以询问区间\([l,r]\)中有多少种颜色,最后还原交互库手中的序列,只需要保持相对顺序不变。\(n\leq10^3\),最多询问次数\(Q=2000\)或\(Q=10^4\)。solution令\(C\)为\([1......
  • CF755G PolandBall and Many Other Balls
    列出转移方程就是傻鸟题了,具体地,令\(f_{i,j}\)为前\(i\)球取出\(j\)组的方案数,有:\[f_{i,j}=f_{i-1,j-1}+f_{i-1,j}+f_{i-2,j-1}\]列出\(f_{i}\)的GF\(F_i(x)\):\[F_i(x)=F_{i-1}(1+x)+F_{i-2}\cdotx\]这是递推,把矩阵元素改成多项式,矩阵快速幂即可。\(O(k\logk\log......
  • AtCoder Grand Contest 012 D Colorful Balls
    洛谷传送门AtCoder传送门不错的题。bxEnder32k。我们发现交换有传递性,那么我们能交换就连边,答案是\(\prod\frac{(sz)!}{\prodc_i!}\),其中\(sz\)为连通块大小,\(c_i\)为这个连通块中第\(i\)种颜色出现次数。于是我们得到了一个\(O(n^2)\)的做法。发现很多遍是无用的......
  • [Algorithm] Two crystal balls problem
    You'regiventwoidenticalcrystalballsanda100-storybuilding.Theballsareincrediblytough,butthereexistssomefloorinthebuilding,abovewhichtheballswillbreakwhendropped,andbelowwhichtheywillnot.Youdon'tknowwhatthi......
  • CodeTON Round 5 (Div. 1 + Div. 2, Rated, Prizes!) C. Tenzing and Balls
    一开始以为是贪心,后来发现不好贪于是选择了dp,但是dp有个小细节没注意到,后面wa了几发我们以状态来分,f[i]表示考虑i的最大区间合长度,每次转移的时候考虑两种情况,一种是a[i]前面有一样的数字,比较选了a[i]和不选a[i]两种情况下的最大值,还有一种就是a[i]为第一个出现的数字则选区间长......
  • F. Bags with Balls 第二类斯特林数
    BagswithBalls标号为奇数的个数为\(c=\frac{m+1}{2}\)标号为偶数个数为\(w=m-c\)答案显然为\(ANS=\sum_{i=1}^{n}C(n,i)c^iw^{n-i}i^k\)直接算是\(O(n)\)的,但这道题\(n\)为\(1e9\)考虑第二类斯特林数化简\(i^k\)\(x^k=\sum_{i=1}^kC(x,i)s(k,i)i!\)\(ANS=\sum_{i=1}^{n}C......
  • [ABC205E] White and Black Balls 题解
    WhiteandBlackBalls题目大意将\(n\)个白球,\(m\)个黑球排成一列,要求满足\(\foralli\in[1,n+m],w_i\leb_i+k\),问存在多少种排法。其中\(w_i\)表示第\(i\)个球前的白球数量,\(b_i\)表示第\(i\)个球前的黑球数量。思路分析我们可以将一种排法映射成一条从\((0,0)......
  • CF101234A Hacker Cups and Balls【二分+线段树】
    Description给一个长度为n的排列,对它做m次操作,每次对[l,r]区间内进行升序/降序排序。问最后的序列处于最中心的数是多少(n为奇数)。Solution是一类没有写过的题,参考题解。二分答案,对于当前的mid,将大于等于mid的数设置为1,小于mid的数设置为0。这样一来,叶结点的值......
  • CF1728A Colored Balls: Revisited题解
    去我的Blog观看修改时间:2022/9/11修改了格式与标点修改时间:2022/9/13修改了个别不严谨的语句题目大意有\(n\)种颜色的球,颜色为\(i\)的球为\(cnt_i\)个(\(cnt_1+cnt_2+\dots+cnt_n\)为奇数)。每次从球堆中取出\(2\)个颜色不相同的球,问最后可能剩下哪种颜色的球(输出任意......