[AtCoder is All You Need]ABC 276 F - Solution
我加了一个假问题

问题简述
给定一个长为的序列
。考虑其前缀序列
,从中放回地随机抽样两次,记这两次所得元素的最大值的期望为
。求整个序列
。
原题目链接:https://atcoder.jp/contests/abc276/tasks/abc276_f
思路1
最开始不知道为什么,认为只需要求。这样的话随便怎么乱搞都可以,所以我直接求了分布函数(,如果
,那么
。不出意外各大高校概率统计都会说这个。这里由于
和
是同一个分布,所以
),然后直接
,就得到了一个优秀的
的算法(指算
的一个元素,所以总共是
,太高了)。
思路2
然后意识到不对劲。
事实上,可以写成和
下标相关的表达式:
通常面对这种表达式,考虑两个期望之间的差异比较合适,不难得到:
快速计算上式的瓶颈在于项,不难想到分成过大和过小的两部分计算:
其中。一部分是比
小元素的数目,一部分是比
大的元素的和。
临场想了一下,能不能绕过数据结构,但最终还是绕不过去。我选择了线段树,当然Fenwick树(树状数组)也可以。时间复杂度为。
后记
本场的实况录制地址:https://www.bilibili.com/video/BV1dR4y1f7z9
做简单题目一卡一卡的,希望未来会更好;希望未来不要看错题。