Codeforces Round #487 (Div. 2) C - A Mist of Florescence

Posted siuginhung

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Codeforces Round #487 (Div. 2) C - A Mist of Florescence相关的知识,希望对你有一定的参考价值。

传送门:http://codeforces.com/contest/989/problem/C

这是一个构造问题。

构造一张网格,网格中的字符为’A’、’B’、’C’、’D’,并且其连通块的个数分别为a、b、c、d。

首先我们可以考虑两种颜色的情形:

构造一张网格,网格中的字符为’0’、’1’,并且其连通块的个数分别为a、b,其中a、b均为正整数。于是,至少为’0’、’1’分别构造一个连通块;再分别以连通块为“网”,植入’1’、’0’,植入时应保证植入的点互不连通。如下图所示:

技术分享图片

以上构造法可以推广至四种颜色的情况。如下图所示:

技术分享图片

参考程序如下:

#include <bits/stdc++.h>
using namespace std;

char g[50][50];

int main(void)
{
    int a, b, c, d;
    cin >> a >> b >> c >> d;
    cout << 50 << " " << 50 << endl;
    for (int i = 0; i < 25; i++) {
        for (int j = 0; j < 25; j++) g[i][j] = A;
        for (int j = 25; j < 50; j++) g[i][j] = B;
    }
    for (int i = 25; i < 50; i++) {
        for (int j = 0; j < 25; j++) g[i][j] = C;
        for (int j = 25; j < 50; j++) g[i][j] = D;
    }
    a--; b--; c--; d--;
    int x, y;
    x = 1; y = 1;
    while (d) {
        g[x][y] = D;
        y += 2;
        if (y >= 25) {
            y = 1;
            x += 2;
        }
        d--;
    }
    x = 1; y = 26;
    while (c) {
        g[x][y] = C;
        y+= 2;
        if (y >= 50) {
            y = 26;
            x += 2;
        }
        c--;
    }
    x = 26; y = 1;
    while (b) {
        g[x][y] = B;
        y += 2;
        if (y >= 25) {
            y = 1;
            x += 2;
        }
        b--;
    }
    x = 26; y = 26;
    while (a) {
        g[x][y] = A;
        y += 2;
        if (y >= 50) {
            y = 26;
            x += 2;
        }
        a--;
    }
    for (int i = 0; i < 50; i++) {
        for (int j = 0; j < 50; j++) putchar(g[i][j]);
        putchar(
);
    }
}

 

以上是关于Codeforces Round #487 (Div. 2) C - A Mist of Florescence的主要内容,如果未能解决你的问题,请参考以下文章

Codeforces Round #487 (Div. 2) C - A Mist of Florescence

Codeforces Round #487 (Div. 2) C - A Mist of Florescence

Codeforces Round #436 E. Fire(背包dp+输出路径)

[ACM]Codeforces Round #534 (Div. 2)

Tourists Codeforces - 487E

Strip CodeForces - 487B (单调队列)