首先,对于反转和轮转操作可以维护整体标记,只考虑其对下标的影响而不实际修改序列。
注意两者的顺序,我的代码选择了让反转标记的优先级高于轮转(当然反过来也没问题)。
然后考虑后四个操作。
考虑在线段树上维护三个信息:区间「部分」数,区间至左的颜色,区间至右的颜色。
合并时首先考虑直接把左右儿子的「部分」数加起来,然后考虑左儿子至右的颜色是否与右儿子至左的颜色相同。
如果满足,贡献要少一(因为可以合并)。
这道题更加让我想把「『SDOI2011』染色」给写出来,不能再偷懒了(
代码:
1 |
|
首先,对于反转和轮转操作可以维护整体标记,只考虑其对下标的影响而不实际修改序列。
注意两者的顺序,我的代码选择了让反转标记的优先级高于轮转(当然反过来也没问题)。
然后考虑后四个操作。
考虑在线段树上维护三个信息:区间「部分」数,区间至左的颜色,区间至右的颜色。
合并时首先考虑直接把左右儿子的「部分」数加起来,然后考虑左儿子至右的颜色是否与右儿子至左的颜色相同。
如果满足,贡献要少一(因为可以合并)。
这道题更加让我想把「『SDOI2011』染色」给写出来,不能再偷懒了(
代码:
1 | #include <cstdio> |
Related Issues not found
Please contact @Alpha1022 to initialize the comment