• agc041_c Duomino Quality


    agc041_c Duomino Quality

    https://atcoder.jp/contests/agc041/tasks/agc041_c

    U6tmLt.png

    Tutorial

    https://img.atcoder.jp/agc041/editorial.pdf

    称每行每列的quality为(Q)的大小为(N)的矩阵为((N,Q)).发现假如存在合法的((A,Q),(B,Q)),那么一定也存在合法的((A+B,Q)).也就是将(A imes A)的矩阵放在左上角,(B imes B)的矩阵放在右下角即可.

    那么考虑用一些较小的矩阵来拼出较大的矩阵来

    U6t1Jg.png

    (N=2)时无解,(N=3)时用((3,1))的矩阵,当(Nge 4)时,先不断在右下角放((4,3))的矩阵直到(4 le N le 7),然后再放上((N,3))即可.

    Code

    #include <cstdio>
    #include <iostream>
    #define debug(...) fprintf(stderr,__VA_ARGS__)
    using namespace std;
    inline char nc() {
    //	return getchar();
    	static char buf[100000],*l=buf,*r=buf;
    	return l==r&&(r=(l=buf)+fread(buf,1,100000,stdin),l==r)?EOF:*l++;
    }
    template<class T> void read(T &x) {
    	x=0; int f=1,ch=nc();
    	while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=nc();}
    	while(ch>='0'&&ch<='9'){x=x*10-'0'+ch;ch=nc();}
    	x*=f;
    }
    const int maxN=1000+5;
    int N;
    char an[maxN][maxN];
    string s[8][8];
    void init() {
    	s[4][0]="aabc";
    	s[4][1]="ddbc";
    	s[4][2]="bcaa";
    	s[4][3]="bcdd";
    	s[5][0]="aabba"; 
    	s[5][1]="bcc.a"; 
    	s[5][2]="b..cb"; 
    	s[5][3]="a..cb"; 
    	s[5][4]="abbaa";
    	s[6][0]="aabc..";
    	s[6][1]="ddbc..";
    	s[6][2]="..aabc";
    	s[6][3]="..ddbc";
    	s[6][4]="bc..aa";
    	s[6][5]="bc..dd";
    	s[7][0]="aabbcc.";
    	s[7][1]="dd.dd.a";
    	s[7][2]="..d..da";
    	s[7][3]="..d..db";
    	s[7][4]="dd.dd.b";
    	s[7][5]="..d..dc";
    	s[7][6]="..d..dc";
    }
    void work(int x,int y,int n) {
    	for(int i=0;i<n;++i) for(int j=0;j<n;++j) an[x+i][x+j]=s[n][i][j];
    }
    int main() {
    	init();
    	read(N);
    	if(N==2) puts("-1");
    	else if(N==3) {
    		puts("aa.");
    		puts("..a");
    		puts("..a");
    	}
    	else {
    		int n=N;
    		for(int i=0;i<n;++i) for(int j=0;j<n;++j) an[i][j]='.';
    		while(n>7) work(n-4,n-4,4),n-=4;
    		work(0,0,n);
    		for(int i=0;i<N;++i) {
    			for(int j=0;j<N;++j) printf("%c",an[i][j]);
    			printf("
    ");
    		}
    	}
    	return 0;
    }
    
  • 相关阅读:
    wpf 获取datagrid中模板中控件
    WPF DataGrid DataGridTemplateColumn 控制模板中控件
    ztree实现拖拽移动和复制
    layui的select监听
    layui父页面获取子页面数据
    win10安装网络适配器
    bat启动OpenOffice4
    java注解简单使用
    win7安装IIS
    java的Array和List相互转换
  • 原文地址:https://www.cnblogs.com/ljzalc1022/p/13332702.html
Copyright © 2020-2023  润新知