[AtCoder]Regular Contest 103

为啥三道构造题啊!!!

C /\/\/\/

题意:给定一个序列,问至少改变多少个数可以让这个序列奇数项相同,偶数项相同,且奇偶项不同。

分奇偶记录出现次数最多的和次多的。如果最多的不同,那就是这两个,如果相同,那就是最多和次多的其中一种组合。

D Robot Arms

题意:给定\(n\)个点,问能不能构造出m条有序的边,使得这些边起点为\((0,0)\),首尾相连能让终点在各个点上,边必须水平或竖直。

对于确定的一组边,终点的坐标的横纵坐标和的奇偶确定。所以,如果这些点奇偶不同,那就gg了。考虑全是奇数的情况(如果是偶数,加一条长度为1的边就行了),一条边\(\{1\}\)可以到达\((1,0),(0,1),(-1,0),(0,-1)\)。两条边\(\{1,2\}\)可以到达的点是以\((3,0),(0,3),(0,-3),(-3,0)\)为顶点的正方形内所有的“奇点”,同理,\(k\)条边\(\{1,2,4,..2^{k-1}\}\)可以到达的点是和\(2^k-1\)有关的。
因此,我们从大到小的确定每条边的方向:这条边的起点必须落在剩下的边组成的正方形中(由于边的长度是偶数,所以不用担心落在“偶点”上)。

E Tr/ee

题意:给定一个长度为\(n\)的字符串\(S\),问能否构造出这样的树:\(n\)个点,如果\(S_i=1\)则可以有删掉一条边后大小为\(i\)的联通块,否则就不可以有。

无解很好判。
一种图:毛毛虫可以满足条件,设有\(k\)个合法的联通块的大小分别为\(x_1, x_2..x_k\),我们构造一只“毛毛虫”,它的“身体”长度为\(k+1\),然后把\(\{x_i\}\)差分一下,放到每个节点上就行了。

F Distance Sums

题意:给定\(n\)个整数\(A\),问能否构造出这样的树:\(n\)个点,\(\sum_j dis(i,j) = A_i\)

还是那个思路,从点\(i\)到儿子\(j\)的时候,路径和变成了\(A_i + n - 2size(j)\),反之亦然。根据直觉,我们发现,叶子的\(A\)值比较大,所以,按\(A\)值从大到小处理,每次找出\(A\)值最大的点的父亲。最后在dfs一遍生成的树看看是否真的合法就行了。

posted @ 2018-10-08 14:31  wyxwyx  阅读(117)  评论(0编辑  收藏  举报