zoukankan      html  css  js  c++  java
  • AGC004解题报告

    在To do list上看到挂了一道F题,不知道为什么会挂在那边,所以就花了一个下午加一个晚上做了一下整套题。

    A是傻题,从B题开始讲。

    B

    $a[i]$最小的肯定是独立取的,从别的转化过来没什么收益,所以可以破环为链。

    枚举第二个操作进行了k次,那么每一个$a[i]$都可以从它前k个元素转移而来,直接取最小值即可(所以不破环也可以)

    C

    自己想了一个“从外向内包,中间开洞使联通”的方法,然后巨难写,特殊情况很多。

    其实有一种比较简单的构造方法:

    直接这样构造,所有的点一定都暴露在外,直接带上即可。

    D

    首先有一个显而易见的结论,不可能存在一个环,因为这样的话环上的点不可能同时到达。

    那么1肯定要是自环,剩下的所有点出度为1,且都可达1,那么反向建图就是一棵树。

    现在问题转化如下:一棵树上可以选择一些点把它整颗子树接到根节点,使得所有节点深度小于等于k

    那么就可以贪心了,尽量选高的点接在根节点上,即每次找到子树深度为k-1的节点接到根节点,然后将其删去。

    E

    转化题意:把所有机器人移动改为洞和边界移动。

    假设这个洞走到的极上下左右都已经确定,那么边界所清除的区间也已经确定了,洞在极上下左右这个矩形中也可以随意移动。

    所以我们就可以用$dp[l][r][d][u]$表示洞扩展这个矩形时最大答案,初始矩形是洞的起始点,转移的时候通过bfs可以保证转移顺序。

    注意空间要开$1e8$,而答案不超过10000,所以直接开short即可。

    F

    确实是一道神仙题。

    先考虑树的情况,发现操作有相邻染色,连续四个染色删掉中间两个,连续六个染色删掉中间四个。。

    其实都是奇偶染色,而染两个点的代价就是它们之间的距离。把奇偶点分别染为1和-1,然后在一个点的时候尽量合并1和-1,剩下的点一定要经过这个点的父亲边继续合并。

    那么直接模拟上述过程进行dp,如果1的dp值不为0就无解,否则最小值是所有点dp值的绝对值之和。

    然后是基环树,分奇环和偶环两种情况。

    如果是偶环,那么还是奇偶染色,我们先把环拉下去的树全都dp然后变成环上的dp值。

    如果环上相同奇偶性的dp和不为0,那么无解,最小情况我们用流来理解。

    (截自FlashHu的博客)

    然后取绝对值以后就是数轴上固定一些点求最小距离和,直接取中位数即可。

    现在讨论奇环。

    奇环会使得这不再是一个二分图,也不能再奇偶染色了。

    但是我们思考奇环的本质,先忽略一条边,以环上的一点为根直接进行树型dp,那条边的功能其实就是把根节点的dp值和被连点的dp值进行一种“不一样的交换”。

    即这两个点可以正的和正的抵消,负的和负的抵消,抵消之后这条边就消失了,就是一个单纯的树型dp。

    因为抵消以后根节点的dp值必须是0,所以可以确定抵消的值为$frac{dp[Rt]}{2}$,即把环上所有点的dp值减去$frac{dp[Rt]}{2}$(相当于环上所有边减掉$frac{dp[Rt]}{2}$,然后新加的那条边要走$frac{dp[Rt]}{2}$(dp贡献表示在根节点上))

  • 相关阅读:
    11111 Generalized Matrioshkas
    Uva 442 Matrix Chain Multiplication
    Uva 10815 Andy's First Dictionary
    Uva 537 Artificial Intelligence?
    Uva 340 MasterMind Hints
    SCAU 9508 诸葛给我牌(水泥题)
    Uva 10420 List of Conquests(排序水题)
    Uva 409 Excuses, Excuses!
    10/26
    11/2
  • 原文地址:https://www.cnblogs.com/Forever-666/p/14028347.html
Copyright © 2011-2022 走看看