zoukankan      html  css  js  c++  java
  • GCPC2017 题解

    GCPC2017 题解

    A

    • 选择一个能看到所有点的方向,进行观察。
    • 然后Z字抖动

    B

    • Polya定理

    C

    • dp[i][j]表示第i秒,到达j号ride的最小耗费

    D

    • 求闭包即可

    E

    • 对边权取log
    • 判断图有没有负环。

    F

    • 先施展一次hungary,记录下匹配的结果。
    • 然后枚举哪个插座变成3个。
    • 在原有的匹配结果上加入两个点,继续增广

    G

    • pick定理

    H

    • 先考虑一根链的情况。
    考虑这组栗子:
    A,B代表两只乌鸦,C代表松鼠,.代表节点
    .........A.C..B.
    这时动乌鸦A显然很沙比。因为一动A,松鼠活动范围就会变得很大很大
    所以我们应该动乌鸦B。乌鸦B飞走后,我们把C可以活动的地方标注出来
    .........A[......]
    注意到乌鸦B必须到
    .........A[B.....]
    因为不这么做,下一步行动,还是只能动B,连着两步动一只乌鸦很不妙
    因为,一步到位更好!
    因此下一步
    ..........BA....
    再下一步
    ...........AB...
    再下一步
    ............BA..
    再下一步
    .............AB.
    再下一步
    ..............BA
    

    其实每一步两只乌鸦分工都很明确。一只负责看门,另一只负责压缩松鼠的活动空间。

    (f[son]):son距离其子树中最远的叶子节点的距离

    • 考虑一棵树,乌鸦A在root节点看门,乌鸦B在天涯海角。松鼠在root为根的子树内。如果松鼠在root的儿子son对应的子树内,那么游戏的步数就是(f[son]+1)
    • 考虑乌鸦第一步该怎么走。
      • case1: 第一步当然可以选择一只乌鸦看门,另一只乌鸦压缩空间。
      • case2: 我们可以让一只乌鸦飞到一个更合适的节点看门。然后第二步再让另一只乌鸦压缩空间。比如说......C...AB这组栗子,第一步可能会是......A.....B。所以我们可以枚举第一步该怎么走。如果第一步A走到了节点root,那么松鼠当然会选择(f(son))最大的那棵子树了,所以答案等于(max{ {f(son)}+1 }=f(root))
      • 【如果,松鼠被乌鸦B看住了,去不了(f(son))最大的子树怎么办吖?】
      • 【答:那为什么不让B看们啊?】

    I

    • 简单DP

    J

    • 咕咕咕

    K

    • 从大到小排序

  • 相关阅读:
    word文档的图片怎么保存到Web编辑器上
    如何在linux下查看gpu信息

    lua注释
    readDouble
    ..在lua中运用
    C++条件分支结构
    C++条件分支结构
    Flink基础(十六):Table API 和 Flink SQL(一)整体介绍
    Flink基础(十四):DS简介(14) 搭建Flink运行流式应用
  • 原文地址:https://www.cnblogs.com/RUSH-D-CAT/p/9726799.html
Copyright © 2011-2022 走看看