【省选模拟】20/06/10

AA

BB

  • 考虑发现一些性质:
    a:记将答案变小的操作为有效操作,则有效操作一定是用 k1k-1 的代价将 kk 个数归位
    b:一次有效操作归位的数一定是一个环
    c:若环上的点数为 kk,则当且仅当环长为 2k22k-2 时这个环存在有效操作
    proof:首先环长的下界是 2k22k-2,即考虑环上座标最小的点,环的形态一定为从这个点开始向后跳然后总后面跳回来,同时一次交换操作会使环长 -2,故环长的上界是 2k22k-2
    d:有效的环一定是座标连续的一段
    e:记 ai>i+1a_i>i+1 的点为正大跨度点,ai<i1a_i<i-1 的为负大跨度点,则正大跨度点后一个点一定为负大跨度点,且交换二者会将原来的环划分成两个环
    模拟即可,复杂度 O(n)O(n)CodeCode
    题解是考虑有效操作为值域和定义域的连续段且逆序对数为长度减 1,需要用数据结构求一下连续段

CC

  • m+mnm+m\le n 时,初始点集合末点集一定在两个大小为 mm 的子树中,方案数为拓扑序方案数
  • 否则可以将点分为 3 类点,前 nmn-m 个点,(nm,m](n-m,m] 的点,以及 (m,n](m,n] 的点
    其中 2 类点构成连通块,对这个连通块进行 dpdp,一个暴力的想法是对每个点钦定其为根进行 dpdp 最后容斥,发现可以考虑重心一定为 2 类点,所以对包涵重心的联通块进行 dpdp
    我们记 fu,a,bf_{u,a,b} 表示 uu 的子树有 aa 个一类点 bb 个三类点的方案数
    对于一类点和三类点的转移,是子树的拓扑序方案数,O(n4)O(n^4),用 dfsdfs 序转移 O(n3)O(n^3)CodeCode
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章