• 图论-突突突突突 (Mar, 2019)


    owo

    [BZOJ 3681] Arietta

    持久化,每次新建节点,避免影响之前的树。

    [AGC 006 F] Blackout

    统计每个弱连通分量,三个颜色染色之后把点重新编号,每个点为起点的边都可以用一个数字 (v) 表示,意义是按照 (0,1,2) 的顺序,边的终点在位置 (v) 。这样每个点都对应了一个集合。初始时,集合存在 (1) 。如果有 (x,y) ,就有 (f(x,y)=-x-y) 。其实能够直接推得的东西仅仅是:另外一个点的集合里面有 (-x-y) ,不过很多点的集合都相同,大部分情况下,自己的集合也会有这个东西。

    以下构造只使用 (1,-2) ,这样结论可以适用于更多的点。

    (x ightarrow f(x,1)=-x-1 ightarrow f(-x-1,-2)=x+3) ,所以 (1+3k) ((k ge 0)) 存在。

    (f(1,1+3k)=-2-3k) ,所以 (-2-3k) ((k ge 0)) 存在。整合起来, (S={1+3t| t in N})

    因此,如果染色成功,初始集合只有 (1) ,答案是 (cnt_0cnt_1+cnt_1cnt_2+cnt_2cnt_0) 。不过一分图和二分图的时候,没有集合存在 (-2) ,此时什么也构造不出来,需要特判。

    如果染色失败,说明存在下面两种情况中的一种,它们可能会使得集合存在更多的元素:

    元素 (0) 就非常好,因为有 (0) 说明每个数都能用来构造它的相反数了,答案就是 (cnt^2)

    第一种: (2+3t in S)

    (t ge 0)(f(2+3t,-2)=-3t ightarrow f(-3t, 1)=3t-1 ightarrow f(3t-1,-2)=-3t+3 ightarrow cdots) ,可以构造 (0)

    (t <0)(f(2+3t,1)=-3t-3 ightarrow cdots) 可以构造 (0)

    第二种: (3t in S)

    (t ge 0)(f(3t,-2)=-3t+2 ightarrow f(-3t+2,1)=3t-3 ightarrow cdots) ,可以构造 (0)

    (t < 0)(f(3t,1)=-3t-1 ightarrow f(-3t-1,-2)=3t+3 ightarrow cdots) ,可以构造 (0)

    [ARC 080 F]

    类似 LED 那道题的差分,假设已经知道 (dis) ,直接费用流不可取,但是的确又需要匹配。

    计算 (dis) ,背包不行,通过哥德巴赫猜想可以得到(特殊数字 (1=5+7-11,2=5-3) ):

    偶数 (dis)(2)

    奇数,如果是素数 (dis) 就是 (1) ,否则是 (3)

    然后匹配,通过分析,贪心选费用 (1) 的点对匹配是正确的,最坏情况 (1+3le 2+2) ,仍然是最优的 。

    所以先把费用是 (1) 的点,奇偶性建图,跑二分图匹配。剩下的偶数和偶数匹配,奇数和奇数匹配,费用 (2) 。如果还有剩余,肯定剩一对 (dis) 是奇数且是合数,费用 (3) 。最坏情况 (2+3le 3+3) ,仍然是最优的。

  • 相关阅读:
    操作系统概论——引
    Oracle知识点总结(一)
    SQLite操作
    JUnit单元测试(六)--Eclipse中JUnit的使用
    IOS沙盒和sqlite简单操作分析
    Android 程序清单文件详解
    限制对比度自适应直方图均衡化算法原理、实现及效果
    第一个django项目
    mysql 引擎优化
    项目
  • 原文地址:https://www.cnblogs.com/ghcred/p/10443496.html
Copyright © 2020-2023  润新知