码迷,mamicode.com
首页 > 其他好文 > 详细

模拟测试62

时间:2019-10-10 22:34:32      阅读:79      评论:0      收藏:0      [点我收藏+]

标签:情况   重复   size   节点   模拟   时间   连通   相对   新建   

T1:

  先考虑树的情况。

  DFS遍历整棵树,将每个儿子向自己连的链两两匹配。

  若有落单的点,就把当前节点的父链连进去,反之将父链传上去。

  对于图的情况,我们可以将一个点拆成许多点,保持边不变,再对新建的树进行上述过程。

  时间复杂度$O(m)$。

T2:

  考虑转化题意。

  设原序列为$a$,对原序列开一个互逆数组$b$,$a$的字典序最小等价于$b$的字典序最小,考虑对$b$进行操作。

  这样题意转化为邻项交换,交换的条件是两个数的差不小于$k$。

  易发现若两个数的差小于$k$,则这两个数永远不会被交换,也就意味着两个数的相对位置固定。

  对于这样的点对,从左向右连边,跑优先队列拓扑。

  但是边的级别是$n^2$的,就把每个点向它右边第一个大于它和第一个小于它并且差小于$k$的连边。

  证明:

    假设有两个不能交换的数$x$和$y$,$y$在$x$右侧,又有另一个数$z$,位于$y$右侧,并且$x$与$z$也不能交换,忽略其他数。

    若$(y>x&&z>x)||(y<x&&z<x)$,$y$与$z$的差一定小于$k$。

    若$(y>x&&z<x)||(y<x&&z>x)$,$x$与$z$直接有连边。

    故上述方法正确。

  时间复杂度$O(nlogn)$。

T3:

  结论:最大流之和为所有边边权相加。

  证明:

    若使最大流之和最大,那么边权小的便起的限制作用应尽可能小。

    由于每条边将树分为两个部分,所以最小边的限制作用至少起到过一次。

    将最小边割断,对剩下的连通块重复进行上述过程。

    所以每个边都被取到一次是最优的。

  就是$A+B problem$。

  时间复杂度$o(n)$。

模拟测试62

标签:情况   重复   size   节点   模拟   时间   连通   相对   新建   

原文地址:https://www.cnblogs.com/hz-Rockstar/p/11650821.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!