这次比赛做得很差,1题垫底,主要A题没考虑len <= 2 都是YES, 检查了半小时,B题写得太匆忙,有个小问题,结果挂了,总结一句话:我还是弱的很。
code:https://github.com/9974/Codeforces/tree/master/215div1
A 注意len <= 2 都是YES, 其它情况检查x,y, z的个数就可以了。
B 问题可以变为 某个序列b与另一个序列a的子序列 rearrang后匹配的个数有几个
首先离散化一下,再让sum[i]表示在序列b中每个数的个数,我们再用一个变量cnt表示没有匹配上的个数, 扫一遍序列a,因为每次只加入一个数,自然修改的sum也只有一个, 修改前后对cnt进行维护一下, 当cnt = 0时就说明已经匹配上了。
C感觉像图论问题,当选的种类n为奇数时,我们发现每个点的度为偶数(n-1),所以肯定能找出一个欧拉回路(欧拉回路所用的点最小),因为每个点的度都相等,根据对称性,我们可以选某个欧拉回路满足题目的构造,且用的点最少,总点数为(n-1)*n/2+1。 当选的种类n为偶数时,我们先找一个最大的欧拉回路, 剩下的点的度数都为1, 然后每个点都与另外某个点没有连过边, 新建这n个点,两两连边, 总点数为 (n-2)*n/2 + n = n*n/2。