LOJ6029「雅礼集训 2017 Day1」市场
做这道题的时候首先想到了另一道线段树区间取模的题。那道题就是因为每次有意义的取模操作后数的大小至少变成原来的一半从而保证了复杂度。这道题是区间整体除,似乎有类似的性质。虽然看起来线段树不可做,但实际上即使是分块也处理不了区间除法操作。
题解正是线段树。差不多就是把能想到的优化都加上去就可过了。听说用势能分析可以证明复杂度是有保证的。
首先想到的优化是,如果区间里的数只有0或-1,那么就直接停止操作,然而仅仅是这样的话只有30分,不如写暴力。
正解是,把部分区间除法改为区间减法。众所周知,区间加减法使用lazy标记的复杂度是$O(logn)$的。如果整个区间里的最大的数和最小的数执行除法操作后减少的值相同,那就转换为区间减法。
1 |
|