其他分享
首页 > 其他分享> > 3.27模拟赛

3.27模拟赛

作者:互联网

(挂惨了 我晚上一定好好睡觉。

T1 求冒泡排列在第几轮结束。\(n\leq 3e7\)

可以发现每次自己左边最大的数字是向右移动的 所以答案为max{自己左边有多少个数比自己大}

想要O(n)求出的话还要再考虑一下 如何求出max 由于是max 我们考虑自己右边最多有多少比自己小的max等价于原答案。

所以我们可以发现 利用较小的数字来统计答案会比用较大的数字统计答案更优 换个说法 \(a_i<a_j\) \(a_i\)和\(a_j\)如果进行换位了 那么我们只统计\(a_i\)的对答案的

贡献至少不会比\(a_j\)要小。一个很难得到最很好好证明的答案:max{i-\(a_i\)}即为答案。

考虑证明:一个数字前面包括本身最多有\(a_i\)个数对答案没有贡献。考虑如果不够这\(a_i\)个数 那么一定有比自己还要小的数字在自己后面 那么这样统计下去至少能够找到答案。

T2:

avatar

标签:数字,max,个数,自己,统计,3.27,模拟,答案
来源: https://www.cnblogs.com/chdy/p/12582022.html