zoukankan      html  css  js  c++  java
  • CF1268

    Codeforces Round #609 (Div. 1)

    A

    (b)(a) 的前 (k) 位后循环得到的数已经 (geqslant a) 了,则其为最优解,否则答案在第 (k) 位加 (1) 后再循环得到的数。需要注意处理进位。

    B

    放骨牌为二分图匹配,得答案为黑白染色后黑格子个数和白格子个数取 (min)

    C

    考虑先将 (1 sim k) 的数合并到一起,即相互相邻,然后再进行调整,第二步调整的花费即为逆序对数。肯定是所有数合并到中位数的位置是最优的。用树状数组维护每个数的出现位置,在树状数组上二分可求解中位数。

    D

    (n geqslant 4) 时,(n) 阶强连通竞赛图存在 (n-1) 阶强连通子图,因此翻转不在强连通子图的那个点,能使其仍为强连通图。

    根据这条引理,可以推得:当 (n>6) 时,可以翻转至多 (1) 个点使原图变成强连通图。

    考虑证明:

    若图中只有两个 (SCC),因为 (n>6),则一定有一个 (SCC) 点数 (geqslant 4),翻转其内一点,使该 (SCC) 仍强连通,然后会形成一个大环,因此图就为强连通图了。

    若图中至少有三个 (SCC),选取拓扑序既不是最小也不是最大的一个 (SCC),翻转其内一点,设拓扑序最小的 (SCC)(a),最大的为 (b),翻转的那个点为 (z),对于任何点对 (x,y),都存在路径 (x o b o z o a o y),因此图就为强连通图了。

    得做法为:(n leqslant 6) 时枚举翻转点的集合,(n>6) 时枚举翻转哪个点。

    还需快速判断一个竞赛图是否为强连通图。发现竞赛图缩点后,拓扑序最大的 (SCC) 中每个点都比该 (SCC) 外的任意一点出度小,设该 (SCC) 内点数为 (k),得其出度之和为 (inom{k}{2}),有结论:

    一个竞赛图非强连通的充要条件为其点按出度从小到大排序后,存在 (k<n) 使得最小的 (k) 个点出度之和为 (inom{k}{2})

    根据这个结论就能快速判断竞赛图是否为强连通图了。

    E

    先考虑树的做法,设 (f_x) 为点 (x) 的答案,按边权从大到小加入边,用 (f_x+f_y) 更新 (f_x)(f_y)。但是在仙人掌上沿用树的做法会算重,需要减去算重的部分。设 (min) 为环上边权最小的边,(max) 为在同一个环上边权最大的边,当 (min)(max) 的两条路径上的边权都递增时,(max) 的两个端点会在 (min) 的两个端点处算重,减去即可。

  • 相关阅读:
    StatusBar
    iOS开发UI篇-UITabBarController简单介绍
    iOS最全梳理
    UITabbarController的UITabbarItem(例:"我的")点击时,判断是否登录
    iOS APP 发布上架流程
    IOS开发
    IT教育课程考评系统开发-26
    IT教育课程考评系统开发-25
    2020100201-1
    IT教育课程考评系统开发-24
  • 原文地址:https://www.cnblogs.com/lhm-/p/13810863.html
Copyright © 2011-2022 走看看