Codeforces#385div.2 2017-01-13 practice

A  Hongcow Learns the Cyclic Shift

题意:给一个字符串,首尾相接成环形,长度为k,问从上面取连续的k个字符,能找出多少不同字符串.

题解:长度为k,那么从串首开始每次后移一个字符,即最长为2k,因为是环形,所以所给字符串本身接在它自己串尾就行.

代码:传送门


Hongcow Solves A Puzzle

题意:给你一张图版,上面由拼图,"x"代表拼图,'.'代表空,问两张相同的图版拼起来,能否拼出一个长方形.

题解:题意真吊,说的是把图版拼起来,而且无视空格,只要能把相同的拼图拼成长方形就行,那么我们只要判断一个该图形本身是否是长方形即可.

代码:传送门


C   Hongcow Builds A Nation (并查集)

题意:n个点,已存在m条边,现在要尽可能多的添加边,给出k个点,这些点相互不允许可达,问最多可再加多少边.

题解:

       一开始题意看岔了,以为k个点不能互连. 不联通就更简单了.

       每个特殊点必定属于一个联通块,且该联通块仅有一个特殊点,这些联通块之间相互不能连接.

       而不含特殊点的联通块之间可以相互连接,即最后可以连为一个联通块,而这个联通块由可再与一个特殊的联通块 相连.

       那么我们只要找出最大的那个联通块,将它与非特殊联通块连起来,即可保证所添加的边最多.

       含有n个点的联通块,边为 n * (n - 1) / 2条.

代码:传送门

你可能感兴趣的:(Codeforces)