今日完成排列dp大学习

AT_dp_t Permutation

我们只考虑大于情况。
思路:考虑是偏序关系,我们只考虑相对大小关系,设\(dp_i\)为目前用了i个数满足前i项式子
能够确定相对大小关系的,只有连续的相同的小于或大于符号限制
于是式子变成了

\[dp_i=dp_{i-pos}*C(pos,i) \]

对吗?怎么是 \(O(n)\)
骗你的,上面是不对的,因为在转移处原本的点如果在之前的位置中排第 \(j\) 位,而你这时给它钦定的位置在这个之前就是不合法的
我们增加一维变成

\[dp_{i,j}=\sum_{1 \le k \le j}dp_{i-pos,k}*C(pos,i-j) \]

容易发现可以前缀和优化。

看完题解后:
坏了孩子们,成砂纸了
你只需要考虑自己与前一个数的关系即可

\[dp_{i,j}=\sum_{1 \le k \le j} dp_{i-1,k} \]

AT_abc282_g [ABC282G] Similar Permutation

题意:
你有多少种排列 \(A,B\) 使他们的各自相邻位置大小关系相同之处恰好有 \(k\)

思考:
很像啊,恰好这个性质很难不想到容斥啊
考虑求至少
好吧想不到滚回来了,又有点像字符串匹配
考虑上个题一样的做法

\[dp_{i,j,j1,sum+0/1}=\sum dp_{i-1,k1,k2,sum} \]

细算一下复杂度是 \(O(n^6)\)
又是容易发现是个二维前缀和
复杂度变成 \(O(n^4)\)

P14364 [CSP-S 2025] 员工招聘 / employ

估一下,以免一晚上给消耗完了

CF1437F Emotional Fishermen

思考:根本每思路啊喂(#`O′),这个dp的平静还要参考之前选过的最大值,我的 trick 库还是太少了

看完题解后:
再来看这篇

posted @ 2025-11-21 20:07  thousands_of_years  阅读(10)  评论(0)    收藏  举报