CodeForces
JokerJim
这个作者很懒,什么都没留下…
展开
-
【题解】 CF1359D 【Yet Another Yet Another Task】
扫描线大佬真的强……我来说说我的奇怪做法。根据题意,只要先手选定一个区间之后,拿掉的一定是最大值,那么我们可以考虑枚举这个被拿掉的最大值。于是考虑每个数作为最大值能影响的范围,显然可以用单调栈求出左右第一个比它大的。记iii在[l,r][l,r][l,r]内是最大值,那么我们就是要从这个位置开始,分别向左向右找到一段和最大的子段。先考虑右边,左边同理。我们对原序列进行前缀和,那么也就是要找到[i,r][i,r][i,r]中前缀和的最大值。所以我们用st表预处理,查询区间最大值即可。代码中为了方便原创 2020-11-04 11:00:58 · 414 阅读 · 0 评论 -
【题解】 CF1359E 【Modular Stability】
我们先拉出序列中最小的那个数aaa,假设现在有一个大于aaa的模数bbb,那么思考一下它们的顺序对答案的影响。对于任意正整数xxx,我们要满足x%a%b=x%b%ax\%a\%b= x\%b\%ax%a%b=x%b%a,又因为b>ab>ab>a,所以x%a%b=x%ax\%a\%b=x\%ax%a%b=x%a,所以上式即x≡x%b(moda)x \equiv x\% b\pmod ax≡x%b(moda)然后设x=tb+yx=tb+yx=tb+y,那么tb+y≡y(moda)tb+y\原创 2020-11-04 10:59:36 · 373 阅读 · 1 评论