您的位置:首页 > 其它

AtCoder Regular Contest 093 D - Grid Components

2018-03-26 08:46 627 查看
Problem Statement
You are given two integers A and B.

Print a grid where each square is painted white or black that satisfies the following conditions, in the format specified in Output section:

Let the size of the grid be h×w (h vertical, w horizontal). Both h and w are at most 100.
The set of the squares painted white is divided into exactly A connected components.
The set of the squares painted black is divided into exactly B connected components.
It can be proved that there always exist one or more solutions under the conditions specified in Constraints section. If there are multiple solutions, any of them may be printed.

Notes
Two squares painted white, c1 and c2, are called connected when the square c2 can be reached from the square c1 passing only white squares by repeatedly moving up, down, left or right to an adjacent square.

A set of squares painted white, S, forms a connected component when the following conditions are met:

Any two squares in S are connected.
No pair of a square painted white that is not included in S and a square included in S is connected.
A connected component of squares painted black is defined similarly.

Constraints
1≤A≤500
1≤B≤500
Input
Input is given from Standard Input in the following format:

A B
Output
Output should be in the following format:

In the first line, print integers h and w representing the size of the grid you constructed, with a space in between.
Then, print h more lines. The i-th (1≤i≤h) of these lines should contain a string si as follows:
If the square at the i-th row and j-th column (1≤j≤w) in the grid is painted white, the j-th character in si should be ..
If the square at the i-th row and j-th column (1≤j≤w) in the grid is painted black, the j-th character in si should be #.
Sample Input 1
2 3
Sample Output 1
Copy
3 3
##.
..#
#.#
This output corresponds to the grid below:

2701558bf42f7c088abad927b419472a.png
Sample Input 2
7 8
Sample Output 2
Copy
3 5
#.#.#
.#.#.
#.#.#
Sample Input 3
1 1
Sample Output 3
4 2
..
#.
##
##
Sample Input 4
3 14
Sample Output 4
8 18
..................
..................
....##.......####.
....#.#.....#.....
...#...#....#.....
..#.###.#...#.....
.#.......#..#.....
#.........#..####.
题意:给出A个白色联通块,B个黑色联通块,然后构造出来一个矩形满足A B联通块的个数。
思路:此题目是特判题目,所以答案不唯一,我们可以构造出一个很大的固定长100 宽100的矩形来完成它,很容易发现当有这样的一个联通块时,

* * *
.  *  .
* *  *
有2个白色  1个黑色,(黑色多所以以黑色为背景,以白色为背景也可,非背景色块以一个为一个块作为联通块)所以我们可以将100*100分为2个50*100  一个为黑色背景  一个为白色背景,然后利用上图的性质来进行构造#include <bits/stdc++.h>

using namespace std;

int main()
{
int a,b;
cin >> a >> b;
a--,b--;
printf("100 100\n");
for(int i=0;i<50;i++)
{
for(int j=0;j<100;j++)
{
if(i%2&&j%2&&a)
{
a--;
printf(".");
}
else printf("#");
}
printf("\n");
}
for(int i=50;i<100;i++)
{
for(int j=0;j<100;j++)
{
if(i%2&&j%2&&b)
{
b--;
printf("#");
}
else printf(".");
}
printf("\n");
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: