首页 > 其他 > 详细

DPC6th

时间:2020-07-13 10:44:51      阅读:50      评论:0      收藏:0      [点我收藏+]

D

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

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

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

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

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

  • \((s,t)\notin E\)则直接接在后面
  • \((s,t)\in E\)
    \(s\)能到达\(V\backslash \{s,t\}\),一定存在\(u\),使得\((V\backslash \{s,u\},t)\)合法
    则构造\(s\longrightarrow u\longrightarrow t\longrightarrow \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‘=S\cup l\)
  • 与一个段合并
    假设其与\(L_i\)合并
    \(S‘=S\),即完全被\(L_i\)包含,有\(L_i-(l-1)\)种方案
    \(L_i\)长度增加,\(\forall x\in[1,l)\),有两种方案使得\(L_i‘=L_i+x\)
  • 与两个段合并
    假设其连接在\(L_i,L_j\)中间
    \(\forall x\in[0,l-1)\),有\(l-1-x\)种方案使得,\(L_i,L_j\longrightarrow 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)\)
容易发现,\(m\le \frac{X}{l_i}\)。复杂度可优化至\(O(n^2X)\)

DPC6th

原文:https://www.cnblogs.com/Grice/p/13269953.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!