zoukankan      html  css  js  c++  java
  • 【题解】 Codeforces Round #706 题解

    附(本场比赛各题 fst 率)

    div2 A B C D E F
    div1 A B C D E F
    div2 0.0010 0.0035 0.0007 0.3090 0 0
    div1 0 0.1962 0.0026 0 0 0

    A - Split it!

    检查 (k=0) 或者长 (k) 的前缀和长 (k) 的后缀的反串是否相同。

    注意如果 (2k=n) 要特判。

    复杂度 (O(n+k))

    B - Max and Mex

    模拟一下过程就会发现:

    要么 (max)(operatorname{max}) 永远不会变,要么就会一直加 (1)

    所以答案只有可能是 (n,n+1,n+k) 中的一个。

    注意特判 (k=0)

    复杂度 (O(n))

    C - Diamond Miner

    把所有点翻折到正半轴。

    在最优方案中连线不能交叉,因为三角形不等式。

    所以直接排序贪心连接。

    复杂度 (O(n log n))

    D - Let's Go Hiking

    设最长连续单调段长度为 (a),个数为 (b)

    只有 (b=2),且这两段有交,且 (a) 为奇数的时候有解。

    复杂度 (O(n))

    E - Garden of the Sun

    搁三列填满一次,发现这样不会有环,然后只需要把这些列连起来就行了。

    复杂度 (O(nm))

    F - BFS Trees

    考虑计算 (f(i,j)),如果 (i,j) 之间最短路有多条则答案为 (0)

    否则可以暴力检查每一条边是否能在树中,并为每一个不在最短路上的点安排一个父亲结点即可。

    复杂度 (O(n^2m))

    G - Qingshan and Daniel

    找到会出完牌的一队 A,另一队伍为 B,对于 A 队,它的每一次出牌会造成右侧第一个 B 队的人出牌。

    直接记录一下当前遍历到的 A 队的它们会让多少个后面的 B 队的人出牌 (cnt)

    如果下一个是 A 队,则 (cnt += a_i)

    如果下一个是 B 队,则让这个人出 (min(a_i,cnt)) 张牌,并让 (cnt) 减小。

    复杂度 (O(n+m))

    H - Squares

    这题窝不会,丢个官方题解:https://codeforces.com/blog/entry/88533

    验题人提供一个和官方题解不同的做法。

    把树建出来,发现你无论怎么走到 end,都必须经过一个点的父亲。

    预处理每个点到父亲的最短路,预处理跳过一棵子树的最短路和落点。

    查询可以直接树上差分出来。

    复杂度 (O((n+q)log n))

  • 相关阅读:
    Quicksum -SilverN
    uva 140 bandwidth (好题) ——yhx
    uva 129 krypton factors ——yhx
    uva 524 prime ring problem——yhx
    uva 10976 fractions again(水题)——yhx
    uva 11059 maximum product(水题)——yhx
    uva 725 division(水题)——yhx
    uva 11853 paintball(好题)——yhx
    uva 1599 ideal path(好题)——yhx
    uva 1572 self-assembly ——yhx
  • 原文地址:https://www.cnblogs.com/imakf/p/14515312.html
Copyright © 2011-2022 走看看