ZROI T20200720
Posted sususos
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ZROI T20200720相关的知识,希望对你有一定的参考价值。
T1 染色(color)
签到题
题目描述
? 给定 nn,你现在需要给整数 11 到 nn 进行染色,使得对于所有的 1≤i<j≤n1≤i<j≤n,若 j−ij−i 为质数,则 ii 和 jj 不同色。
? 求出颜色尽可能少的染色方案。如果有多种方案,输出任意一种即可。
输入格式
? 第一行一个整数 nn。
输出格式
? 第一行一个整数 kk,表示颜色数。
? 第二行 nn 个整数 colicoli(1≤coli≤k1≤coli≤k),表示 ii 的颜色。
数据范围
? 对于30%30%的数据,n≤10;
? 对于 60%60% 的数据,n≤20;
? 对于 100%100% 的数据,n≤104。
时空限制
? 时间限制:1s
? 空间限制:128MB
样例输入
7
样例输出
4
1 2 2 3 3 4 1
考虑质数可以分为2和奇质数。
我们考虑奇偶性染色,便可以满足所有的奇质数。
因为有2的存在,我们必须按照mod 4的方式 染色。
当n小于8的时候爆搜。(我是用特判)
1 #include<bits/stdc++.h> 2 using namespace std; 3 inline int read() 4 { 5 int x=0;char c=getchar(); 6 for(;!isdigit(c);c=getchar()); 7 for(;isdigit(c);c=getchar()) x=x*10+c-‘0‘; 8 return x; 9 } 10 int n; 11 int main() 12 { 13 n=read(); 14 if(n==1) printf("1 1 "); 15 else if(n==2) printf("1 1 1 "); 16 else if(n==3) printf("1 1 1 2 "); 17 else if(n==4) printf("2 1 1 2 2 "); 18 else if(n==5) printf("3 1 1 2 2 3 "); 19 else if(n==6) printf("3 1 1 2 2 3 3 "); 20 else{ 21 printf("4 "); 22 for(int i=1;i<=n;i++) 23 { 24 printf("%d ",((i-1)%4)+1); 25 } 26 } 27 return 0; 28 }
以上是关于ZROI T20200720的主要内容,如果未能解决你的问题,请参考以下文章