qoj7301 & AGC036D 题解

qoj7301

orz yxx
有一个很牛的状态设计 \(f_{i,j,0/1}\)\(0\)\(a_{i-1}>a_i\)\(j\) 记录 \(a_{i-1}\) 的值,\(a_i\) 的值未定;\(1\)\(a_{i-1}<a_i\)\(j\) 记录 \(a_i\) 的值
这样可以完美解决 \(a_{i-1}>a_i<a_{i+1}\) 的问题
转移和优化都是简单的,时间复杂度 \(O(n^2)\),思想是:不需要用的东西就可以暂时不记录
submission

AGC036D

牛!
首先的一个发现是:如果保留负边 \(i\to j(i<j)\),则一定会保留 \(i'\le i,j'\ge j\)\(i'\to j'\) 的所有负边
原因是 \(i'\to j'\) 等价于从 \(i'\) 先走 \(0\) 边到 \(i\),再走 \(i\to j\),最后走 \(j\to j'\)\(0\)

这个性质仍然不够强!
这里给出更强的性质:我们一定可以把序列划分成若干个不交的区间,删除同一区间内的负边和跨过 \(\ge 2\) 个区间的正边
即形如:image
我们来口胡一个证明:
\(i\) 往右第一条负边为 \(i\to r_i\)
如果出现 \(i<j<r_i<r_j\),我们证明一定可以加入边 \(j\to r_i\)
如果 \(r_p=i\)\(r_q=j\)\(p,q\) 集合完全相同的话(即最大的 \(p=\) 最大的 \(q\)),那么显然不会影响;否则我们可以找到一额子问题 \(p<q<r_p<r_q\),继续规约下去

后面的 \(dp\) 就好做了,直接做就是 \(O(n^3)\)
submission

posted @ 2025-02-05 22:19  Farmer_D  阅读(26)  评论(0)    收藏  举报