zoukankan      html  css  js  c++  java
  • DPC6th

    D

    ((V,s))为点集(V),从(s)出发,若存在哈密顿回路即为合法
    必要条件

    • (|V| eq 3),除(s)外,没有顶点入度为(|V|-1)
    • (|V|=3),满足上述条件外,(Vackslash {s})无边

    进一步的,这个必要条件为充要条件

    带点归纳的来证明这个东西(并没有看懂官方题解里具体的证明,但画画图可以感性理解,所以下面也不会写的太详细)

    证明:
    (Vackslash {s})中一定存在一点(t),使得((Vackslash {s},t))合法

    • ((s,t) otin E)则直接接在后面
    • ((s,t)in E)
      (s)能到达(Vackslash {s,t}),一定存在(u),使得((Vackslash {s,u},t))合法
      则构造(slongrightarrow ulongrightarrow tlongrightarrow cdots)

    考虑根据这个充要条件怎么构造:

    • (|V|le 4),我们爆搜构造
    • (|V|>4)(exists s),其入度为(|V|-1),显然填其。否则任意点均符合条件,选择最小的

    E

    (l_i)降序排列,然后依次进行操作
    假设现在有([l_1,r_1),[l_2,r_2),cdots,[l_m,r_m)),长度分别为(L_i=r_i-l_i)。将长度为(l)的线段添加进去,有三种情况

    如果我们并不关心已有段具体位置,也就是它们暂时还并未放到线段中取,仅考虑形成集合(S={L})的方案数

    • 增加新段:(L_{m+1}=l)
    • (l)与一个段合并
    • (l)与两个段合并

    由于(l_i)是降序排列的,所以不存在另外的情况

    • 增加新段
      有一种方案。(S'=Scup l)
    • 与一个段合并
      假设其与(L_i)合并
      (S'=S),即完全被(L_i)包含,有(L_i-(l-1))种方案
      (L_i)长度增加,(forall xin[1,l)),有两种方案使得(L_i'=L_i+x)
    • 与两个段合并
      假设其连接在(L_i,L_j)中间
      (forall xin[0,l-1)),有(l-1-x)种方案使得,(L_i,L_jlongrightarrow L_i+L_j+x)

    (sum L_i=K),其转移到(sum L_i'=K'(K'ge K))的方案,可以通过(K)得知而并不需要知道具体的({L})

    (f_{i,m,K})为处理完前(i)({l}),有(m)段,其中(sum L=K)。状态数为(O(n^2X)),转移(O(l_i))。复杂度为(O(n^2X^2))
    容易发现,(mle frac{X}{l_i})。复杂度可优化至(O(n^2X))

  • 相关阅读:
    2.5(他们其实都是图)
    食物链POJ1182
    LG P6748 『MdOI R3』Fallen Lord
    LG P4199 万径人踪灭
    LG P1912 [NOI2009]诗人小G
    LG P4381 [IOI2008]Island
    2020/8/9 模拟赛 T3 表格
    UOJ422 【集训队作业2018】小Z的礼物
    CF913F Strongly Connected Tournament
    LG P5643 [PKUWC2018]随机游走
  • 原文地址:https://www.cnblogs.com/Grice/p/13269953.html
Copyright © 2011-2022 走看看