来源:题解 P11233 染色 - 洛谷专栏
如果想要两个相同的数对得分作出贡献,就必须满足:
1. 这两个数同色。
2. 这两个数之间的所有数颜色必须和这两个数相反。
如:
你如果想让两个 222 做出贡献,如果 222 染成红色,那么 222 之间的 555 和 111 就只能染成蓝色。
既然需要将中间的颜色置为同一种颜色,那当 Ai=AjA_i=A_jAi =Aj 时我们可以将 i+1i+1i+1 的位置和 j−1j-1j−1 的位置之间作一条权值 AiA_iAi 的边。接下来,我们只需要求交叉的不重合的区间权值和最大值了。如果 Ai=Ai+1A_i=A_i+1Ai =Ai +1,则直接将 AiA_iAi 加入答案。
例如大样例
解法如下:
最终得分:181818。
可以证明这可以巧妙解决交叉染色的难题。
求不重复的区间最大权值和很简单,基础 DP 即可。
时间复杂度:O(T(N+Ai))O(T(N+A_i))O(T(N+Ai ))。