首页 > 其他分享 >闲话 23.1.31

闲话 23.1.31

时间:2023-01-31 16:26:20浏览次数:62  
标签:right 饼干 闲话 31 步数 23.1 frac times sum

闲话

symbolic method 写了 7k 了(
感觉能写很多的样子!

有人膜我 说我多项式全家桶就剩三道了
我当机立断说 这话显然 fake 我还特地核查了
然后那人想挂我来着 我就和他说:我特地核查了 你这话就是错的
他倒是来劲了
我倒要看看是谁挂谁

image

杂题

今天模拟赛 T3 的弱化版是 Round #641 的题,部分分是那题
然后题解就写了啊:《之前 CF div1 D 原题,算是给⼤家送分了。》

?那我要是搬来这场的 F2 原题 是不是也给大家送了 100 分?
我希望我能搬来 CF1349F2 然后放在 T1 的位置呢!给大家送 100 分!

哦我懂了 题解的意思是除了我以外所有人都可以场切 CF1349D 的意思吧
那就是我的功夫不到家了
各位太强了 爆踩 tourist

CF1349D

有 \(n\) 个人, 第 \(i\) 个人有 \(a_i\) 个饼干。每次随机选择一个饼干, 将其随机分配给除了它现在所有者的其他 \(n-1\) 个人。求使得一个人拥有所有饼干的期望步数, 对 \(998244353\) 取模。

\(n\le 5\times 10^6, \sum a_i \le 10^7\)。

设 \(P[X_i]\) 为最后饼干全在第 \(i\) 个人处的概率,\(E[X_i]\) 为这一部分概率下的期望步数。
答案即为 \(\sum_{i= 1}^n E[X_i]\)。也可以发现 \(\sum P[X_i] = 1\)。

设 \(E_0[X_i]\) 为只有当饼干全在第 \(i\) 个人处时游戏才能结束的情况下,饼干全在第 \(i\) 个人处的期望步数。

我们发现,\(E_0[X_i]\) 是好求的,因此我们寻找用 \(E_0[X_i]\) 表示 \(E[X_i]\) 的方案。这时就必须考虑到另一个人 \(j\) 拿到所有饼干的情况,并从这种情况转移。可以发现 \(\forall i, j\),把所有饼干从 \(i\) 处转移到 \(j\) 的期望步数是相同的,记作 \(C\)。

我们可以确定 \(i\),枚举 \(j\),写出

\[E[X_i] = E_0[X_i] - \sum_{j \neq i} \left( P[X_j]\times C + E[X_j] \right) \]

也就是

\[\sum_{j = 1}^n E[X_j] = E_0[X_i] - \sum_{j \neq i} P[X_j]\times C \]

我们记 \(\text{ans} = \sum_{i= 1}^n E[X_i]\),并两边对 \(i\) 求和得到

\[n\times \text{ans} = \sum_{i = 1}^n E_0[X_i] - C(n - 1) \sum_{j = 1}^n P[X_j] = \sum_{i = 1}^n E_0[X_i] - C(n - 1) \]

因此我们只需要求得每个 \(E_0[X_i]\) 和 \(C\)。

发现每个人本质上是等价的,因此我们可以只记录 \(f(k)\) 为某个人最开始手中有 \(k\) 块饼干的情况下取得所有饼干的期望。可以发现 \(E_0[X_i] = f(a_i), C = f(0)\)。

然后我们只需要讨论各种情况并转移即可。设 \(m = \sum a_i\),不难得到

\[f(k) = \left\{ \begin{aligned} & \frac{1}{n - 1} f(k + 1) + \frac{n - 2}{n - 1} f(k) + 1 \ , && k = 0 \\ & \frac{m - k}{m} \left( \frac{1}{n - 1} f(k + 1) + \frac{n - 2}{n - 1} f(k) \right) + \frac{k}{m} f(k - 1) \ , && 0 < k < m \\ & 0 \ , && k = m \end{aligned} \right. \]

下面关注 \(0 < k < m\) 的情况对应的式子。可以发现左右两侧 \(f\) 的系数之和都为 \(1\),因此如果将 \(f\) 做差分则这个式子能应用在差分上,求和号内与 \(k - 1, k, k + 1\) 无关的项都可以消去。

我们设 \(g(i) = f(i) - f(i + 1), g(m) = 0\),则 \(f(k) = \sum_{i = k}^m g(i)\)。这样带入式子能得到

\[\sum_{i = k}^m g(i) = \frac{m - k}{m} \left( \frac{1}{n - 1} \sum_{i = k + 1}^m g(i) + \frac{n - 2}{n - 1} \sum_{i = k}^m g(i) \right) + \frac{k}{m} \sum_{i = k - 1}^m g(i) \]

化简得到

\[g(k) = 1 + \frac{(m - i) (n - 2)}{m (n - 1)} g(k) + \frac{k}{m} (g(k) + g(k - 1)) \]

移个项得到

\[g(i) = \frac{m(n - 1) + i(n - 1) g(i - 1)}{m - i} \]

可以直接视 \(g(-1) = 0\),\(g(0)\) 可以直接带入得到值为 \(n - 1\)。

直接计算即可,不难从 \(g\) 得到答案。

总时间复杂度 \(O(n + m)\)。

鞅和停时定理等 symbolic method 写完再说吧(

Submission.

标签:right,饼干,闲话,31,步数,23.1,frac,times,sum
From: https://www.cnblogs.com/joke3579/p/chitchat230131.html

相关文章

  • 2319. 判断矩阵是否是一个 X 矩阵
    2319.判断矩阵是否是一个X矩阵题解:模拟classSolution{publicbooleancheckXMatrix(int[][]grid){intn=grid.length;for(inti=0;......
  • 【230131-2】已知:x+y+z=1 求:xy+2yz+3xz的最大值?
    ......
  • 2023-1-31 #31 喜欢如落幕后放映机繁忙空转
    171AGC059EGrid3-coloring一个很脑洞的想法,我们构造一个矩阵,使得其与颜色模\(3\)同余。若能构造一个这样的矩阵一定能得到答案,而可以发现一个答案矩阵也能构造出一......
  • pyppeteer 下载 chromium 浏览器报错解决方法 (2020.05.31)
    pyppeteer运行需要chromium浏览器,第一次运行时候会自动下chromium浏览器,但是由于网络问题,国内下载会报连接错误解决方法:方法1(推荐):下载chromium浏览器到本地,百度搜......
  • [LeetCode] 2319. Check if Matrix Is X-Matrix
    Asquarematrixissaidtobean X-Matrix if both ofthefollowingconditionshold:Alltheelementsinthediagonalsofthematrixare non-zero.Alloth......
  • 2023.1.28~2023.1.30 日寄
    2023.1.28~2023.1.30猜猜看为什么会积压三天?看看前两天在干什么吧。一言(1.28)我会被音乐打动、被诗歌打动,如果有一天我不再被打动了,我就会死。你知道我的意思吗?被打动......
  • 2023.1.13 每日三题
    1.项目经理正在为一个高度复杂的电信项目制定人力资源管理计划。由于快速变化的技术环境,项目经理不确定应该分配的资源类型。若要完成项目资源管理计划,项目经理首先应该......
  • 2023.1.30 每日三题
    1.由于项目范围发生变化,签约了一家新的供应商。该供应商曾有不按时交付的记录,这令项目经理十分担心。项目经理应该怎么做?A.立即终止与该供应商的合同。B.要求采购人员......
  • 【算法训练营day31】LeetCode455. 分发饼干 LeetCode376. 摆动序列 LeetCode53. 最大
    LeetCode455.分发饼干题目链接:455.分发饼干独上高楼,望尽天涯贪心的思路,将每块饼干都发给最合适的孩子,那么最后分发饼干的策略就是最合适的,即可满足最多的孩子。class......
  • LeetCode 31_下一个排列
    LeetCode31:下一个排列题目整数数组的一个排列就是将其所有成员以序列或线性顺序排列。例如,arr=[1,2,3],以下这些都可以视作arr的排列:[1,2,3]、[1,3,2]、[3,1,2......