【Atcoder】AGC014 B-F简要题解

*B.Unplanned Queries

又zz了。

把路径覆盖拆成两个点分别覆盖其到根的路径,使得操作独立。

x x x的父边会被覆盖 x x x子树所有点的操作次数之和 s u m x sum_x sumx,即 s u m x sum_x sumx为偶,因为每条边都需要满足条件,所以递推下去即除根外所有点操作次数必须为偶。

判断操作次数为奇的点个数是否 ≤ 1 \leq 1 1即可。


C.Closed Rooms

第一轮先努力向外走 k k k步,发现后面的操作都是先开距离在 k k k内的锁,然后走 k k k步——相当于直接没有障碍地向外拓展。

所以走完第一轮后,每次都向外 B F S BFS BFS拓展 k k k步直到到达边界。


D.Black and White Tree

若最后图中存在不与黑点相连的白点,则先手胜。

考虑贪心地选择度数最小的白点让其满足条件:每次选择一个叶子结点的父结点染成白色,后手必须把叶子结点染成黑色——若该父结点的儿子结点不止一个,则先手必胜。否则相当于删去了这对点。

所以把点都安排成儿子和父亲的点对,如果有剩下的点则先手胜。


E.Blue and Red Tree

一次操作等价于拆开两个连通块之间的唯一的连边(树上路径唯一),在两个连通块之间重新连边(可以与原先的连边相同)。

所以每次找到两颗树中之间都有连边的两个连通块,用 s e t set set&并差集启发式合并即可。

考虑最后一次操作,两颗树中必然存在同样的一条连边,可以先合并这两个点然后向外拓展。

代码中可以把两颗树建在同一张图上,判断连通块之间是否存在两条连边即可。( ≥ 3 \geq 3 3条边当然不合法了)


*F.Strange Sorting

很妙的递推方法和结论,直接贴题解

你可能感兴趣的:(妙,结论及推导,atcoder)