zoukankan      html  css  js  c++  java
  • 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; 
    }
  • 相关阅读:
    事件冒泡
    Tomcat 不能正常启动
    mybatis(非常详细的哦~~~~)
    javadoc 工具生成开发API文档
    Java 泛型
    Tomcat 服务器详解
    J2EE 工作中注意事项
    Java 枚举
    Break,Continue,Return
    位运算符
  • 原文地址:https://www.cnblogs.com/hua-dong/p/9460746.html
Copyright © 2011-2022 走看看