• Gym 100801B Black and White(构造)


    题意:给定X,Y,分别表示由'.'和'@'组成的连通块的个数。

    思路:假如X<Y,我们用两部分来构造这个结果,第一部分由一个'.'连通块和Y-(X-1)割'@'连通块组成,第二个部分由X-1个'.'连通块和X-1个'@'连通块组成.

    其他情况同理.

    #include<bits/stdc++.h>
    using namespace std;
    const int maxn=10010;
    int main()
    {
        freopen("black.in","r",stdin);
        freopen("black.out","w",stdout);
        int N,M,i; 
        scanf("%d%d",&M,&N); //B+W
        if(N==M){
            cout<<1<<" "<<N+M<<endl;
            for(i=1;i<=N+M;i++) 
             if(i&1) putchar('.');//W
             else putchar('@');//B
        }
        if(N>M){
            int same=M-1;
            int L=(N-same)*2+1;
            cout<<2<<" "<<L+same*2<<endl;
            for(i=1;i<=L;i++) 
             if(i&1) putchar('@');
             else putchar('.'); 
            for(i=1;i<=same;i++) putchar('.'),putchar('@');
            putchar('
    ');
            for(i=1;i<=L;i++) {
                putchar('@');
            }
            for(i=1;i<=same;i++) putchar('.'),putchar('@');
        }
        if(M>N){
            int same=N-1;
            int L=(M-same)*2+1;
            cout<<2<<" "<<L+same*2<<endl;
            for(i=1;i<=L;i++) 
             if(i&1) putchar('.');
             else putchar('@');
            for(i=1;i<=same;i++) putchar('@'),putchar('.');
            putchar('
    ');
            for(i=1;i<=L;i++) {
                putchar('.');
            }
            for(i=1;i<=same;i++) putchar('@'),putchar('.');
        }
        return 0; 
    }
  • 相关阅读:
    Spring security中的BCryptPasswordEncoder方法对密码进行加密与密码匹配
    Eclipse导入SpringBoot项目pom.xml第一行报错Unknown error
    分库分表理论概述
    什么是乐观锁,什么是悲观锁
    oracle中的索引查看
    手动实现tail
    KNN理论
    矩阵以及向量
    numpy常用的几个小函数
    线性回归
  • 原文地址:https://www.cnblogs.com/hua-dong/p/9460746.html
Copyright © 2020-2023  润新知