分治恶心题:P7482 不条理狂诗曲。
当 \(\max\) 等函数中有多个变量不好变形时,尝试将一些变量压到一起。
例如本题简化方程:
\[\max(fl_{1,i}+fr_{0,j},fl_{0,i}+fr_{0,j},fl_{0,i}+fr_{1,j})
\]
其中可以将第一二项压在一起变成:\(\max(fl_{1,i},fl_{0,i})+fr_{0,j}\)。
然后修改状态表示,令一个新的量 \(fl'_{1,i}=\max(fl_{1,i},fl_{0,i})\)。
最后你就可以得到一个美观且易于变形的方程了:
\[\max(fl'_{1,i}+fr_{0,j},fl_{0,i}+fr_{1,j})
\]
这里的变形技巧也很巧妙。上面的 \(\max\) 式子无法直接使用,这个时候可以分类讨论。以取左侧为例,这个式子的值为(省略 \('\) 符号)\(fl'{1,i}+fr_{0,j}\) 当且仅当:
\[fl_{1,i}+fr_{0,j} \ge fl_{0,i}+fr_{1,j}
\]
移项:
\[fl_{1,i}-fl_{0,i} \ge fr_{1,j}-fr_{0,j}
\]
然后令 \(s(x)=fl_{1,x}-fl_{0,x}\),上式即为:\(s(i) \ge s(j)\)。至于取 \(fl_{0,i}+fr_{1,j}\),不等式倒过来即可(等号不要算重)。
保证不重不漏以后,就可以排序用双指针做了。
另外还要注意,在计算过程中一定要搞清楚方程中量的具体含义和求取要求,这道题将 \(fl\) 和 \(fr\) 压在一起都要开四个数组,再两两取最大值合并后才能达到前面不等式里的形式。