【省选模拟】20/06/10

A A A

B B B

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

C C C

  • m + m ≤ n m+m\le n m+mn 时,初始点集合末点集一定在两个大小为 m m m 的子树中,方案数为拓扑序方案数
  • 否则可以将点分为 3 类点,前 n − m n-m nm 个点, ( n − m , m ] (n-m,m] (nm,m] 的点,以及 ( m , n ] (m,n] (m,n] 的点
    其中 2 类点构成连通块,对这个连通块进行 d p dp dp,一个暴力的想法是对每个点钦定其为根进行 d p dp dp 最后容斥,发现可以考虑重心一定为 2 类点,所以对包涵重心的联通块进行 d p dp dp
    我们记 f u , a , b f_{u,a,b} fu,a,b 表示 u u u 的子树有 a a a 个一类点 b b b 个三类点的方案数
    对于一类点和三类点的转移,是子树的拓扑序方案数, O ( n 4 ) O(n^4) O(n4),用 d f s dfs dfs 序转移 O ( n 3 ) O(n^3) O(n3) C o d e Code Code
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FSYo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值