• [思维构造] 题解 Coloring Torus


    [思维构造] 题解 Coloring Torus

    题目链接

    这道题目,实在是想不出来,看了题解。

    题目分析

    如果 (kle 500) 可以这样无脑构造:

    [egin{matrix} 1& 1& cdots& 1 \ 2& 2& cdots& 2 \ vdots& vdots& ddots& vdots \ k& k& cdots& k \ end{matrix} ]

    (k>500) 时,注意到 (k) 最大时 (1000) ,恰好是 (500) 的两倍,这可能暗示着什么。

    注意到下面这种方案是满足条件的:

    [egin{matrix} 1& 2& 3& 4& 5& 6\ 2& 3& 4& 5& 6& 1\ 3& 4& 5& 6& 1& 2\ 4& 5& 6& 1& 2& 3\ 5& 6& 1& 2& 3& 4\ 6& 1& 2& 3& 4& 5\ end{matrix} ]

    如果我们把奇数行的某个数字替换成原本不存在的数字,那么得到的矩阵仍然是满足条件的:

    [egin{matrix} 7& 2& 3& 4& 5& 6\ 2& 3& 4& 5& 6& 1\ 3& 4& 5& 6& 7& 2\ 4& 5& 6& 1& 2& 3\ 5& 6& 7& 2& 3& 4\ 6& 1& 2& 3& 4& 5\ end{matrix} ]

    如果我们把奇数行的任意多个数字都替换成相应多个原本不存在的数字,那么得到的矩阵仍然是满足条件的:

    [egin{matrix} 7& 2& 3& 8& 9& 6\ 2& 3& 4& 5& 6& 1\ 3& 8& 9& 6& 7& 2\ 4& 5& 6& 1& 2& 3\ 9& 6& 7& 2& 3& 8\ 6& 1& 2& 3& 4& 5\ end{matrix} ]

    当然,这个需要建立在 (n) 是偶数的前提下, (500) 就是偶数。

    由此我们就可以先构建出这样的矩阵,然后相应地替换掉这些位置的数字即可。

    参考代码

    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    #define ch() getchar()
    #define pc(x) putchar(x)
    using namespace std;
    template<typename T>void read(T&x){
    	static char c;static int f;
    	for(c=ch(),f=1;c<'0'||c>'9';c=ch())if(c=='-')f=-f;
    	for(x=0;c>='0'&&c<='9';c=ch())x=x*10+(c&15);x*=f;
    }
    template<typename T>void write(T x){
    	static char q[65];int cnt=0;
    	if(x<0)pc('-'),x=-x;
    	q[++cnt]=x%10,x/=10;
    	while(x)
    		q[++cnt]=x%10,x/=10;
    	while(cnt)pc(q[cnt--]+'0');
    }
    int main(){
    	int k;read(k);
    	if(k<=500){
    		write(k),pc('
    ');
    		for(int i=1;i<=k;++i)
    			for(int j=1;j<=k;++j)
    				write((i+j-2)%k+1),pc(" 
    "[j==k]);
    	}
    	else{
    		k-=500;
    		write(500),pc('
    ');
    		for(int i=1;i<=500;++i){
    			for(int j=1;j<=500;++j){
    				int tmp=(i+j-2)%500+1;
    				if((i&1)&&tmp<=k)tmp+=500;
    				write(tmp),pc(" 
    "[j==500]);
    			}
    		}
    	}
    	return 0;
    }
    
    
  • 相关阅读:
    查看内置命令和非内置命令帮助的几种方法(man、help、info)
    手写js的insertAfter
    Java 单链表简单实现
    StudentMain控屏后如何关闭
    python3 twisted问题
    python3 you-get
    数据库方言(这是啥玩意儿?)
    vi/vim用法
    sublime text3
    数据库命令大全(也不是很全哈)
  • 原文地址:https://www.cnblogs.com/lsq147/p/13930265.html
Copyright © 2020-2023  润新知