Semifinal 1
ReverseAndIncrease
只需要知道s能够到达的最小的数。
如果s不为形如99999的数,我们总能把他变为形如10002的数。 然后直接判断
ColorfulEnclosure
我们固定左端点,然后右端点从右往左扫描。
如果我们对每个点维护一个
fi
f
i
表示当下边界为
i
i
上边界至少要为的话,每次删除点相当于checkmax(可以画图理解一下)。
然后相当于用吉司机线段树维护 fi f i ,以及 fi−ai f i − a i 的最小值。 这个不是很好做,不过有一种乱搞做法就是判断当前区间是否全为1个数,是的话直接改,否则递归。实测速度接近 O(log2n) O ( log 2 n ) ,随机数据比原版快,而且能做许多原版不能做的东西。
不过这道题我没有A,好像网上的程序都过不了,不知道是不是TC的问题。
Semifinal 2
RatingProgressAward
好题。
相当于把原来的序列分为三个部分,段与段之间的元素满足原来的限制,然后使得第二段的和最大。
拆点最小割即可。