noip模拟45

T1

\[ans=\frac{\sum_{i=1}^{n} |a[i]-ans|}{2^k} \]

每次选择时,由于剩下的数与正确答案的差的绝对值的和是一定的,那么两个cpu一定会选择同一位,填相反的数

也就是说,每次选择都会将集合划分为两个子集,且满足子集除了被选的位外各个位1的个数为子集大小的一半

这样的选择会进行k次,每一位都会被选择,所以最后每个数都会被等概率选到

T3

排序之后,设sum[i]表示a[i]的前缀和,如果满足\(sum[i-1]<\lceil\frac{a[i]}{2}\rceil\) ,那么\((sum[i-1],\lceil \frac{a[i]}{2}\rceil)\)是不能覆盖的区间,且满足\((\lceil\frac{a[i]}{2}\rceil,sum[i])\)一定是合法区间

证明:

\([\lceil\frac{a[i]}{2}\rceil,a[i]]\)\([\lceil \frac{sum[i]}{2}\rceil,sum[i]]\)分别合法

\(\lceil \frac{sum[i]}{2}\rceil<=a[i]\)时显然合法

\(\lceil \frac{sum[i]}{2}\rceil>a[i]\)时,我们要做的就是从sum[i]中不断拿出元素,使左边界小于等于a[i],且右边界始终在上一次移动前的左边界的右边

对于移动过程中的一个sum[x]和sum[x-1],若\(sum[x-1]>=\lceil\frac{ sum[x]}{2}\rceil\),这次移动合法,继续移动

\(sum[x-1]<\lceil\frac{ sum[x]}{2}\rceil\),化简

\[2*sum[x-1]<=sum[x] \]

\[sum[x-1]<=a[x] \]

\[sum[x]<=2*a[x] \]

\[a[x]>=\frac{sum[x]}{2} \]

由刚才的结论知,此时满足区间\([\lceil \frac{a[x]}{2} \rceil,sum[x]]\)合法,因为\(a[x]<=a[i]\),且移动到此时仍是合法,即在之前移动过程中没有断层,故区间\([\lceil\frac{a[i]}{2}\rceil,sum[i]]\)合法,移动结束

证毕

noip模拟45

上一篇:100个裁判对n个选手做无并列排名问题探析


下一篇:Codeforces Round #739 (Div. 3)