我好区,被六年级 xxs 单调队列了。
场上思路:
考虑“拉”与“推”DP 结合。
* 拉:dpi=max{推的贡献,max1≤j<i−Ai且Aj≤Aidpj}+Aidp_i=\max\{推的贡献,\max_{1\le j\lt i-A_i且A_j\le A_i} dp_j\}+A_idpi =max{推的贡献,max1≤j<i−Ai 且Aj ≤Ai dpj }+Ai 。
* 推:将 dpidp_idpi 值贡献到所有 j>i+Aij\gt i+A_ij>i+Ai 且 Aj≤AiA_j\le A_iAj ≤Ai 的 jjj 上。
显然都是二维偏序,而且要动态更新所以是在线的,然后有一些很紫的 O(nlog2n)O(n\log^2 n)O(nlog2n) 做法。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
事实上,“推”DP 完全可以放到“拉”DP 转移。就是考虑转移 dpidp_idpi 时,查询 max1≤j<i−Ai且j+Aj<i\max_{1\le j\lt i-A_i且j+A_j\lt i}max1≤j<i−Ai 且j+Aj <i 即可,不需要推。可以看作在线单点改 (i,i+Ai)(i,i+A_i)(i,i+Ai ),矩形查 ([1,i−Ai−1],[1,i−1])([1,i-A_i-1],[1,i-1])([1,i−Ai −1],[1,i−1])。由于【数据删除,我也不知道为啥】,所以这其实是离线二维数点???O(nlogn)O(n\log n)O(nlogn)。
这显然是对的,但这为啥是对的,这显然是对的,但这为啥是对的,这显然是对的,但这为啥是对的,这显然是对的,但这为啥是对的,这显然是对的,但这为啥是对的,