zoukankan      html  css  js  c++  java
  • CF1383C String Transformation 2【分析性质,构造】

    传送门

    首先是转化成图论问题:在初始无边的 (20) 个点的有向图 (G_1) 中按某种顺序加边,使得 (forall iin[1,n])(A_i)(B_i) 有时间递增的路径。

    构造 (20) 个点的有向图 (G_2)(forall iin[1,n])(A_i) 连向 (B_i)。设弱连通块数为 (c),DAG 导出子图的最大点数是 (k)。可以构造出一种连 (2n-c-k) 条边的做法:

    显然每个弱连通块独立,可以分别考虑。对于 (n) 个点的弱连通块,将点重标号使得最大 DAG 导出子图的拓扑序是 (1,2,cdots,m),则按顺序连 ((1,2),(2,3),cdots,(m,m+1),(m+1,1))((m+1,m+2),cdots,(n-1,n),(n,m+1),cdots,(n-2,n-1))

    然后可以证明 (2n-c-k) 条边是下界。

    考虑转化一下命题:设存在一种加 (e) 条边的合法方案,则可以找到一个大小至少为 (2n-c-e) 的点集,其导出子图是 DAG。

    证明:增量法维护 (G_2) 的一个点集 (S)。一开始在 (G_1) 中无边,每个弱连通块只有一个点,(S) 是整个点集。然后考虑加一条边 ((u,v))

    • (u,v) 不在同一弱连通块,则合并这两个连通块。此时 (|S|) 不变,弱连通块数 (-1)
    • (u,v) 在同一弱连通块,若 (vin S) 则把 (v)(S) 中删去,否则无事发生。此时弱连通块数不变,(|S|) 至多 (-1)

    可以证明最后得到的 (S) 内的点都不能走回自己,所以是 DAG。且恰好有 (n-c) 条边是第一种情况,因此 (|S|ge n-(e-(n-c))=2n-c-e),得证。

    所以只要把 (c,k) 求出来然后直接输出 (2n-c-k) 就可以所以这 tm 是数竞题么

    计算 DAG 导出子图最大点数可以暴力做状压 dp,对每个点集都计算出它是否是 DAG。时间复杂度 (O(T|Sigma|2^{|Sigma|}+sum n))

  • 相关阅读:
    How To Scan QRCode For UWP (4)
    How To Crop Bitmap For UWP
    How To Scan QRCode For UWP (3)
    How To Scan QRCode For UWP (2)
    How To Scan QRCode For UWP (1)
    How to change windows applicatioin's position via Win32 API
    8 Ways to Become a Better Coder
    How to resize or create a thumbnail image from file stream on UWP
    C# winform压缩文件夹带进度条
    MS ACCESS MID函数
  • 原文地址:https://www.cnblogs.com/AThousandMoons/p/14708121.html
Copyright © 2011-2022 走看看