Shu-How Zの小窝

Loading...

2025 12 2

  • 坏了是不是好久没写总结了,之前格了一段时间,然后本来打算11.27写的,但是生病了/jk,后面就NOIP了,病现在好的差不多了来着/jk
  • DAY10 T2
    • 定义 \(f_s\) 表示 \(s\) 子集中,只考虑 \(s\) 的导出子图,1 能到达 \(s\) 里所有点的方案
    • 定义 \(g_s\) 表示 \(s\) 子集中,只考虑 \(s\) 的导出子图,2 能到达 \(s\) 里所有点的方案
    • \(E_s\)\(s\) 内部边数
    • \(f_s = 2^{E_s} - \sum_{t \subseteq s,t \neq s} f_t \cdot 2^{E_{s - t}}\)
    • 考虑1能到达的点集是 \(s\),2能到达的点集是 \(t\)
    • 如果 \(E_{s+t} = E_{s}+E_{t}\)\(s\)\(t\) 无交
    • 答案为 \(\sum_{s交t等于空集} f_s \cdot g_t \cdot 2^{E(全集-s-t)}\) 时间复杂度为 \(O(3^n)\)
  • DAY 10 T3
    • 考虑 \(d_i\) 等于 0 的时候我想出来了 \(dp_i\) 表示 \(a\) 的值为离散化后第 \(i\) 小的时候 \(b\) 的最大值,然后考虑用线段树维护即可
    • 最巧妙的一部在于 如何弄掉 $ + d_i$ 的操作
    • 考虑 \(S_i = \sum_{j<=i} d_j\)\(A_i = a_i - S_i, B_i = b_i - S_i, L_i = l_i - S_i, R_i = r_i - S_i\) 故我们可以把 \(a_i + d_i -> a_i\) 的操作转化为 \(A_{i-1} -> A_i\),第二步则能转换为 \(A_i <- \min(A_i, L_i), B_i <- \min(B_i, R_i)\) 然后用我们上述的做法做就行了
  • CF916E 树链剖分+分类讨论
    • 就分讨一下就行了,紫的话虚高感觉
  • AT_abc133_f
    • 树剖板题
  • 把NOIP T2按照记忆打了来着,然后在洛谷上过了,基本稳了/hanx
  • 基环树

    • 一棵树+一条边
    • 无向基环树
      • \(n\) 个点,\(n\) 条边,且 \(n\) 个点联通的图
    • 有向基环树
      • 外向基环树:每个点恰好有一条入边,形态上就是一个环往外走到链
      • 内向基环树:每个点恰好有一条出边,形态上就是任意点出发都会走到环中
    • 基环树的处理
      • 1.断掉环上的某条边,一般适用于基环树DP,从断边两侧跑两次树形DP,汇总维护答案
      • 2.找出环,将整个环视为根节点,看作树来处理,讨论经过环和不经过环的答案
    • 无向基环树找环
      • 方法1:只需要找到环上的一条边,考虑并查集
      • 方法2:需要找到环上所有点和边,考虑类拓扑排序
    • 有向基环树找环
      • 方法1:dfs,从入度为0(或者出度为0)的点遍历并维护深度,当出现有深度的点 \(nxt\)\(dep_nxt < dep_cur\),找到环 (首选)
      • 方法2:类tarjan,维护栈,找强连通分量(scc)
      • 方法3:拓扑排序
    • 注意二元环
    • P8655 P8943 找环板子题
    • P2607,可以发现由多棵基环树/树,组成故对于基环树枚举一条在环上的边 \((u,v)\) 断掉,并考虑 \(u\) 不选/ \(v\) 不选的情况跑树形DP即可
    • P4381 多棵基环树的直径之和
      • 考虑一棵基环树的直径,以环作为根节点
      • 拓扑排序,算出次长链与最长链求不经过环的最大路径
      • 当直径经过环,则取环上两点 \(p1,p2\)\(max(f_{p1} + f_{p2} + dis(p1,p2))\) (\(f_x\) 为以 \(x\) 为根的子树的最长链)
      • 考虑前缀和优化枚举即可
  • 然后晚上被赶去上语文课了。。。
posted @ 2025-12-02 18:14  睡神本神  阅读(1)  评论(0)    收藏  举报