线段树
mayaohua2003
这个作者很懒,什么都没留下…
展开
-
Codeforces Round 1336 简要题解
发现好久没写题解了,补几场cf的题解。A. Linova and Kingdom略B. Xenia and Colorful Gems略C. Kaavi and Magic Spell略D. Yui and Mahjong Set吐了,辛辛苦苦推了一年依次问1∼n1\sim n1∼n的算法,结果交上去WA了,又分析了半天发现只有当n>5n>5n>5的时候才能保证正...原创 2020-04-28 23:35:26 · 525 阅读 · 0 评论 -
Atcoder agc029E
先考虑一个点的总体访问顺序。我们发现一个点的子树内部可以划分为若干个根节点单调递增的连通块,满足连通块内部编号均小于根。于是我们访问的时候会依次访问这些连通块。对于两棵子树,我们会把连通块按根的编号归并起来访问,加入一个根节点会将根的编号最小的几个连通块与它合并。可以用线段树合并简单支持维护这些连通块,并记录它们的大小。再考虑计算cic_ici。对于点iii,它到111号点路径上的所有节点均需...原创 2020-03-05 22:15:59 · 285 阅读 · 0 评论 -
Codeforces 671E
考虑对于一个给定的区间如何计算最小代价。令gig_igi取负求出前后缀和。我们的策略显然是贪心的从左往右考虑,每次前缀和lsum>0lsum>0lsum>0就减到000,再从右往左做一次,每次剩余的后缀和rsum>0rsum>0rsum>0就减到000。这样可以发现最小代价是maxi(maxj≤ilsumj+maxj≥irsumj)\max_i (\max...原创 2019-12-06 20:19:41 · 176 阅读 · 0 评论 -
Codeforces 526F
怎么还有这么套路的题?考虑按rir_iri排序,问题就变为求出有多少个区间满足cic_ici为连续段。这个问题有经典的线段树+单调栈做法。具体来说,我们考虑对右端点rrr做扫描线,计算有多少个合法的左端点lll,那么合法条件是maxi=lrci−mini=lrci=r−l\max_{i=l}^{r}c_i-\min_{i=l}^{r}c_i=r-lmaxi=lrci−mini=lr...原创 2019-11-26 19:57:53 · 720 阅读 · 0 评论 -
Atcoder agc028E
真神题,场上只过了2个,硬想了几个小时还是想出来了。先考虑如何判断是否有解。我们先观察一个合法的解具备的性质。我们称PPP中前缀的high位置为关键位。对于XXX和YYY分别的high位置,一定会包含所有关键位,反过来,如果我们钦定两个长度相等且不相交的上升子序列分别作为XXX和YYYhigh位置的集合,并且它们包含所有关键位,那么容易构造出sss。因此,我们只需要考虑钦定两个上升子序列UUU...原创 2019-11-06 19:31:08 · 225 阅读 · 0 评论 -
Atcoder agc023E
这个题感觉比较简单?可是场上只过了777个人。如果要计数有多少个排列是经典问题,按AiA_iAi排序后,答案就是∏i=1n(Ai−i+1)\prod_{i=1}^{n}(A_i-i+1)∏i=1n(Ai−i+1)。现在要求逆序对的总数,显然考虑枚举点对计数。假设我们算的是(i,j)(i<j)(i,j)(i<j)(i,j)(i<j)的贡献,那么当Ai≤AjA_i \leq...原创 2019-11-02 19:44:37 · 412 阅读 · 0 评论 -
XSY #3478 取石子
题意两个人玩取石子游戏,一开始小D有XXX颗石子,小Y有YYY颗石子。两人轮流取石子,小D先取,共NNN轮,第iii轮当前操作者会从对方那里收取AiA_iAi颗石子,若不足AiA_iAi颗则全取来。问最后小D手里有多少石子。有QQQ次修改,每次可以修改XXX或YYY或某个AiA_iAi。1≤N,Q≤5∗1051\leq N,Q \leq5*10^51≤N,Q≤5∗105。题解可以理...原创 2019-04-15 15:36:25 · 295 阅读 · 0 评论