首页 > 其他分享 >AtCoder Regular Contest 126 E Infinite Operations

AtCoder Regular Contest 126 E Infinite Operations

时间:2023-04-27 19:14:02浏览次数:50  
标签:Operations AtCoder le bar limits Contest sum 操作

洛谷传送门

AtCoder 传送门

算是对这篇博客的补充吧。

设 \(a_1 \le a_2 \le \cdots \le a_n\)。

发现最优操作中一定是对相邻的数进行操作,因为如果 \(a_j\) 想把 \(x\) 给 \(a_i\)(\(i < j\)),最优是依次操作 \((j-1,j,x),(j-2,j-1,x),...,(i,i+1,x)\)。这样 \(x\) 就能造成 \((j-i)x\) 的得分。

最后全部数一定会无限趋近于 \(\bar{a}\)。考虑所有用到 \((i-1,i)\) 的操作的得分(拆贡献)。\(i \sim n\) 的数如果想把一些量给 \(1 \sim i-1\),就必须要用到 \((i-1,i)\)。那么贡献为:

\[\sum\limits_{j=i}^n a_j - \bar{a} \]

什么意思呢?如果 \(a_i < \bar{a}\),意味着 \(\sum\limits_{j=1}^{i-1} \bar{a} - a_j > 0\),它们想要变成 \(\bar{a}\) 必须要跟 \(i\) 右边的大于平均值的数操作,所以贡献是 \(\sum\limits_{j=1}^{i-1} \bar{a} - a_j = \sum\limits_{j=i}^n a_j - \bar{a}\);否则 \(\sum\limits_{j=i}^n a_j - \bar{a} > 0\),它们想要变成 \(\bar{a}\) 必须要跟 \(i\) 左边的小于平均值的数换,所以贡献是 \(\sum\limits_{j=i}^n a_j - \bar{a}\)。

这样我们得到了最终的答案:

\[ans = \sum\limits_{i=1}^n i \times a_i - \frac{n+1}{2} \sum\limits_{i=1}^n a_i \]

右项容易维护,问题变成了维护左项即 \(\sum\limits_{i=1}^n i \times a_i\)。注意因为前面的讨论假定 \(a_1 \le a_2 \le \cdots \le a_n\),所以这里的 \(i\) 实际上是排名(为了保证排名不重复需要强制重复的数按位置排序),所以单点修改相当于是加入/删除一个数。而加入/删除一个数又会让比他大的数的排名 \(+1/-1\)。

拓展一下,可以看成是维护 \(\sum\limits_{i=1}^n x_iy_i\),每次区间加 \(x_i\) 或 \(y_i\)。这个可以用线段树做,每个结点维护 \(\sum x_i, \sum y_i, \sum x_i y_i\) 即可。时间复杂度 \(O((n + q) \log (n + q))\)。

code

标签:Operations,AtCoder,le,bar,limits,Contest,sum,操作
From: https://www.cnblogs.com/zltzlt-blog/p/17359964.html

相关文章

  • 【AtCoder】Forbidden Pattern
    题目链接分析首先考虑哪些串能被删空。下面只考虑长度为偶数的串。考虑这样一个(错误的)算法:从左往右依次加入串中的字符,然后能删则删。这个算法对于结尾为A的串一定能删空。对称地,开头为B的串也一定能被删空。现在只需要考虑开头为A结尾为B的串。如果它能被删空,则一定存......
  • AtCoder Regular Contest 112 F Die Siedler
    洛谷传送门AtCoder传送门感觉太人类智慧了。设\(A=(c_1,c_2,...,c_n)\)表示当前每种牌的数量,\(f(A)\)为状态\(A\)只进行换牌操作最终最少剩下几张牌。\(f(A)\)是可以贪心求出的,因为策略必然是能换则换。并且我们发现依次换\(2,3,...,n,1\),最后\(c_2\simc_n\)都......
  • AtCoder Regular Contest 123 C 1, 2, 3 - Decomposition
    洛谷传送门AtCoder传送门从低位往高位考虑。设当前个位为\(k\),暴力搜索这一位向上进\(i\)位,设\(\left\lfloor\frac{n}{10}\right\rfloor-i\)的答案为\(t\)。若\(t>10i+k\)显然就不可行,因为就算个位全部填\(1\)也不能补齐;否则\(n\)的答案就是\(\max(t,\l......
  • AtCoder Regular Contest 120 F Wine Thief
    洛谷传送门AtCoder传送门Hint如果是一个环怎么做?Answer由于是一个环,因此环上每个点对最终答案造成的贡献都相同。设$f_{i,j}$为长度为$i$的序列选$j$个不相邻的点的方案数,则$f_{i,j}=\binom{i-j+1}{j}$。应该很好理解,考虑一个长度为$i-j+1$的链,链头、链尾和两......
  • AtCoder Regular Contest 125 E Snack
    洛谷传送门AtCoder传送门很棒的flow题,考虑建二分图。源点向每种零食连边权为\(a_i\)的边,每种零食向每个孩子连边权为\(b_j\)的边,每个孩子向汇点连边权为\(c_j\)的边,这个图的最大流就是答案。直接跑最大流肯定T,考虑最大流等价于求这个图的最小割,因此转而求最小割。......
  • AtCoder Regular Contest 126 D Pure Straight
    洛谷传送门AtCoder传送门很不错的状压。考虑先把最后作为答案的数聚到一起,再算它们的逆序对个数。设\(f_S\)为当前选的数集合为\(S\)的答案。有转移:选\(a_i\),答案加上之前选的比它大的数;不选\(a_i\),此时需要把左边的数或者右边的数往中间挪一个,答案加上左右两端的最......
  • SMU Spring 2023 Trial Contest Round 10
    SMUSpring2023TrialContestRound10 A-RemoveDuplicates#include<bits/stdc++.h>usingnamespacestd;typedefpair<int,int>PII;typedefpair<string,int>PSI;constintN=2e2+5,INF=0x3f3f3f3f,Mod=1e6;constdoubleeps=1e-6;typedef......
  • AtCoder Regular Contest 115 F Migration
    洛谷传送门AtCoder传送门这种最大值最小化的题一般可以先考虑二分。设二分了一个\(mid\)。记\(A=(a_1,a_2,...,a_k)\)为表示每个棋子的位置的状态,如果\(A,B\)可以互相到达,就在它们之间连一条无向边。则要判断的是\(S=(s_1,s_2,...,s_k)\)和\(T=(t_1,t_2,...,t_k......
  • 2017 ACM-ICPC, Universidad Nacional de Colombia Programming Contest D
    AlexhastwomagicmachinesAandB.MachineAwillgiveyou2x + 1coinsifyouinsertxcoinsinit,machineBwillgiveyou2x + 2.Alexhasnocoinsandwantstogetexactlyncoinsinordertobuyanewunicorn,buthecan’tfigureouthowtodoi......
  • 2014 Pacific Northwest Region Programming Contest—Division 2 Problem U — lim
    Incollegefootball,manydifferentsourcescreatealistoftheTop25teamsinthecountry.Sinceit’ssubjective,theselistsoftendiffer,butthey’reusuallyverysimilar.Yourjobistocomparetwooftheselists,anddeterminewheretheyaresimi......