竞赛讨论区 > 【题解】CCPC Wannafly Camp Day6
头像
王清楚
发布于 2020-02-01 18:06
+ 关注

【题解】CCPC Wannafly Camp Day6

难度分布

  • Easy: C,K,L,M,N
  • Easy-Medium:J,F,I,G
  • Medium:D,E,H
  • Medium-Hard:A,B

A. Convolution

  • 2^(ab)=sqrt(2)^((a+b)^2-a^2-b^2)
  • 对每个 a+b,求出 sqrt(2)^(-a^2-b^2) 的和
  • NTT
  • 时间复杂度:O(nlogn)

B. 双圈覆盖

  • 先将每个点度数变成3:拆点
  • 之后⼀定有偶数个点,且去掉环后点两两配对了
  • 第⼀类圈:最外层的环
  • 第⼆类圈:配对边 和 {(2i,2i+1)} 构成的⼀系列欧拉回路
  • 第三类圈:配对边 和 {(2i,2i-1)} 构成的⼀系列欧拉回路

C. 酒馆战棋

  • 最好情况:普通随从破盾,剧毒随从杀怪
  • 最坏情况:剧毒随从破盾
  • 模拟即可

D. 递增递增

  • 出题⼈做法:
  • 因为 a[1…n] 递增,考虑最⾼位,a[1…k] 为0,a[k+1…n]
    为 1,然后分成左右两半做
  • 维护当前已经定的值和 a[L…R] 的最紧的限制的关系
  • 有更好的做法,但这个做法更通⽤

E. Access

  • f[x][i] 表示⼦树 x 经过 i 次 access 的形状个数
  • 合并时,access 次数等于所有⼉⼦⼦树⾥ access 次数之
    和(要钦定⼀个⼉⼦来将它的实边延⻓上去)
  • ⼀种情况;没有⼉⼦的实边延⻓上去了:那么要额外执⾏
    ⼀次 access(x)
  • 时间复杂度:O(nk)

F. 图与三⻆形

  • ⾮同⾊三⻆形:⿊⿊⽩或者⽩⽩⿊
  • 恰好两个点连出来的边不同⾊

G. 单调栈

  • ⾸先 f[1] 肯定是 1,把所有是 1 的位置拿出来,把 K…1 倒
    序放⼊,其他 f[x]-=1,然后递归下去做

H. 异或询问

  • 做法1:[L,R] xor x 可以分成 O(logn) 个连续的区间,对每
    个区间去⽤ multiset 计算答案
  • 做法2:将 trie 树建出来,把 L,R 在上⾯⽤类似线段树区间
    询问的⽅法去进⾏询问

I. 变⼤

  • 最优解⾥ a[1…n] 肯定是分成若⼲段,每⼀段⾥最⼤值唯
    ⼀,且最后这⼀整段都会变成这个最⼤值。
  • ⻓度为 L 的⼀段需要的次数是 L/2,背包⼀下即可。

J. K 重排列

  • 考虑 i->p[i] 连边后,周期就是所有环的⻓度的 LCM,所以
    充要条件就是每个环的⻓度都是 K 的约数
  • 每次枚举最⼩点所在的环的⻓度,⽤组合数学的⽅法求⽅
    案数

K. 最⼤权值排列

  • 越靠中间对答案影响越⼤
  • 所以⼤的数尽量往中间放

L. 你吓到我的⻢了.jpg

  • BFS

M. ⾃闭

  • 注意读清楚题意

N. 合并

  • 很多奇奇怪怪的贪⼼交上来了
  • 其实⽆论怎么进⾏合并,最后的答案⼀定是 a[1…n] 两两的
    乘积之和
  • 所以只要你写的贪⼼没算错答案就肯定是对的

全部评论

(0) 回帖
加载中...
话题 回帖

等你来战

查看全部

热门推荐