CF1220F】的更多相关文章

CF1220F 把整棵树分成1的左边和1的右边两部分 最优情况两边子树深度的差一定可以是一 如果还可以是2,也可以通过把多的那一边的点往另一边移使他变成1 如果往一个端点加点,一定不会使这一边变优,也不会使另一边变劣 所以可以二分去找这个区间 #include<iostream> #include<cstring> #include<cstdio> #include<algorithm> using namespace std; const int M =…
 首先考虑初始排列,pi会让周围所有比其大的元素深度+1,所以要求每个点的深度,只要其被覆盖了几次即可 这个覆盖可以通过处理每个元素的左右边界(单调栈O(n))+线段树区间更新(Ologn(n))来做 然后是将排列最左边一个元素移到最右边: 在左边删元素pi,只会让pi右边所有比其大的元素深度-1, 在右边加上元素pi,会让pi左边比其大的元素深度+1 这种循环左右移动,需要频繁更改线段树的下标,不好操作,所以我们一开始直接用一个两倍的数组来建立线段树,只要查询时查询长度为n即可 #includ…
CF1158C CF1163E update after CF1173 很好,我!expert!掉rating了!! 成为pupil指日可待== 下次要记得合理安排时间== ps.一道题都没写的\(asuldb\)排名比窝和慎老师还高,然后还嘲讽窝掉rating?? 他合格考稳了 CF1179D CF280C 期望 CF914D CF1041C CF1197E 码力约等于-inf CF1217D 如果\(x>y\)则标红否则标蓝毕竟一个环不可能单调不降 CF322F 拉格朗日插值 CF1215D…