A Hongcow Learns the Cyclic Shift
题意:给一个字符串,首尾相接成环形,长度为k,问从上面取连续的k个字符,能找出多少不同字符串.
题解:长度为k,那么从串首开始每次后移一个字符,即最长为2k,因为是环形,所以所给字符串本身接在它自己串尾就行.
代码:传送门
B Hongcow Solves A Puzzle
题意:给你一张图版,上面由拼图,"x"代表拼图,'.'代表空,问两张相同的图版拼起来,能否拼出一个长方形.
题解:题意真吊,说的是把图版拼起来,而且无视空格,只要能把相同的拼图拼成长方形就行,那么我们只要判断一个该图形本身是否是长方形即可.
代码:传送门
C Hongcow Builds A Nation (并查集)
题意:n个点,已存在m条边,现在要尽可能多的添加边,给出k个点,这些点相互不允许可达,问最多可再加多少边.
题解:
一开始题意看岔了,以为k个点不能互连. 不联通就更简单了.
每个特殊点必定属于一个联通块,且该联通块仅有一个特殊点,这些联通块之间相互不能连接.
而不含特殊点的联通块之间可以相互连接,即最后可以连为一个联通块,而这个联通块由可再与一个特殊的联通块 相连.
那么我们只要找出最大的那个联通块,将它与非特殊联通块连起来,即可保证所添加的边最多.
含有n个点的联通块,边为 n * (n - 1) / 2条.
代码:传送门