【2020.11.28提高组模拟】T1 染色(color) 题解

题意描述

给长度为n的数列染色,若\(i-j\)为质数那么\(i,j\)异色。求最小需要的颜色种类并构造出一组。

\(n\le10^4\).

Solution

考虑构造出一组稳定的循环染色方案,数列上一周期的颜色相同。若循环节为\(1,2\)显然不行(因为\(2\)是质数),同理还有\(3\)也不行(因为\(3\)是质数)。而更大的质数都不是\(4\)的倍数,所以循环节最小是\(4\).

所以种类=\(min(n,4)\),构造出的答案就是\(1,2,3,4,1,2,3,4,1,2,3,4,1,\dots\)

注意6及以内要特判或者暴力搞就完事了。

范围里的\(n\le 10^4\)是吓人的,\(jz\)签到题的老传统了。

Code

bool book[100010];
//int prime[100010];
//int size;
int n;
int i,j;
void pre()
{
book[1]=1;
for(i=2;i<=n;i++)
{
if(!book[i])
{
// prime[size++]=i;
for(j=2;i*j<=n;j++)
{
book[i*j]=1;
}
}
}
}
int color;
int a[10010];
bool had[10010];
int main()
{
// freopen("color.in","r",stdin);
// freopen("color.out","w",stdout);
n=read();
///*
if(n==7)
{
cout<<"4\n1 2 2 3 3 4 1 ";
return 0;
} //*/
if(n>6)
{
for(i=1;i<=n;i++) a[i]=(i-1)%4+1,color=max(color,(i-1)%4+1);
cout<<color<<endl;
for(i=1;i<=n;i++) cout<<a[i]<<" ";
return 0;
}
pre();
for(i=1;i<=n;i++)
{
memset(had,0,sizeof(had));
for(j=1;j<i;j++)
{
if(!book[i-j]) had[a[j]]=1;
}
bool succ=0;
for(j=1;j<=color&&!succ;j++)
{
if(!had[j]) a[i]=j,succ=1;
}
if(!succ) a[i]=++color;
} cout<<color<<endl;
for(int i=1;i<=n;i++) cout<<a[i]<<" ";
return 0;
}

【2020.11.28提高组模拟】T1 染色(color) 题解的更多相关文章

  1. 【2020.11.28提高组模拟】T1染色(color)

    [2020.11.28提高组模拟]T1染色(color) 题目 题目描述 给定 \(n\),你现在需要给整数 \(1\) 到 \(n\) 进行染色,使得对于所有的 \(1\leq i<j\leq ...

  2. 【2020.11.28提高组模拟】T2 序列(array)

    序列(array) 题目描述 ​给定一个长为 \(m\) 的序列 \(a\). 有一个长为 \(m\) 的序列 \(b\),需满足 \(0\leq b_i \leq n\),\(\sum_{i=1}^ ...

  3. JZOJ 6904. 【2020.11.28提高组模拟】T3 树上询问(query)

    题目 你有一棵 \(n\) 节点的树 ,回答 \(m\) 个询问,每次询问给你两个整数 \(l,r\) ,问存在多少个整数 \(k\) 使得从 \(l\) 沿着 \(l \to r\) 的简单路径走 ...

  4. 【2020.11.30提高组模拟】剪辣椒(chilli)

    剪辣椒(chilli) 题目描述 在花园里劳累了一上午之后,你决定用自己种的干辣椒奖励自己. 你有n个辣椒,这些辣椒用n-1条绳子连接在一起,任意两个辣椒通过用若干个绳子相连,即形成一棵树. 你决定分 ...

  5. 【2020.11.30提高组模拟】删边(delete)

    删边(delete) 题目 题目描述 给你一棵n个结点的树,每个结点有一个权值,删除一条边的费用为该边连接的两个子树中结点权值最大值之和.现要删除树中的所有边,删除边的顺序可以任意设定,请计算出所有方 ...

  6. JZOJ 【2020.11.30提高组模拟】剪辣椒(chilli)

    题目大意 给出一棵 \(n\) 个节点的树,删去其中两条边 使得分出的三个子树大小中最大与最小的差最小 分析 先一边 \(dfs\) 预处理出以 \(1\) 为根每个点的 \(size\) 然后按 \ ...

  7. 【2020.12.03提高组模拟】A组反思

    估计:40+10+0+0=50 实际:40+10+0+0=50 rank40 T1 赛时看到\(n,m\leq9\),我当机立断决定打表,暴力打了几个点之后发现在\(n\ne m\)且\(k\ne0\ ...

  8. 【2020.12.01提高组模拟】A组反思

    105,rk45 T1 赛时一开始先打了\(m=0\)的情况,也就是普通的卡特兰数,然后打了暴力,样例过了,把样例改改就不行了,原因没有保证是枚举的是合法的出栈序列 得分:\(WA\&TLE1 ...

  9. 11.5NOIP2018提高组模拟题

    书信(letter) Description 有 n 个小朋友, 编号为 1 到 n, 他们每人写了一封信, 放到了一个信箱里, 接下来每个人从中抽取一封书信. 显然, 这样一共有 n!种拿到书信的情 ...

  10. 【2020.12.02提高组模拟】A组反思

    55,rk47 T1 赛时先想了\(trie\),想到不一定是前缀,然后就放弃转为打暴力 得分:\(RE22\) 正解是只用判断\(i\)与\(i+1\)的关系,那么只有两种情况,判断一下然后\(dp ...

随机推荐

  1. 多智能体粒子环境(Multi-Agent Particle Env)食用指南--从入门到入土

    0.项目地址: 原地址:openai/multiagent-particle-envs: Code for a multi-agent particle environment used in the ...

  2. Qt 设置QTableView表格列宽自动均分表格

    文章目录 Qt 设置QTableView表格列宽自动均分表格 前言 setSectionResizeMode 通过获取字体占的像素来设置 Qt 设置QTableView表格列宽自动均分表格 前言 最近 ...

  3. golang interface 转 string、int、float64

    interface{} interface{} 接口.interface{} 类型很多人都会混淆.interface{} 类型是没有方法的接口.由于没有 implements 关键字,所以说所有的类型 ...

  4. go mod 安装bee 报错

    报错信息 go: github.com/beego/bee imports github.com/beego/bee/cmd imports github.com/beego/bee/cmd/comm ...

  5. Docker管理面板系列——Portainer

    一.介绍 Portainer是个轻量级的Docker管理面板,和Rancher这种重量级选手没法比,Portainer倾向于单机的管理(后来发现能够添加多个单机节点切换着管理),当然,在Docker搞 ...

  6. 用户代码未处理 SqlException

    场景重现 客户端连接 Sql Server 2008 R2 数据库出现如下错误: 错误原因 后发现是数据库服务是手动启动的,服务器更新重启后,SQL Server服务没自动启动... 解决办法 把SQ ...

  7. 如何学习SLAM(超级全面)

    如何学习SLAM(超级全面) 由于SLAM是一个错综复杂的研究领域,涉及到非常多的关键技术.这里先讲讲学习方法论,然后对一些关键性概念(包括SLAM.ROS.SLAM移动机器人)进行分析,最后给出典型 ...

  8. 太赞了!两个技巧帮你记住复杂 Linux 命令!

    Linux 经历这么多个年头了,其中命令越来越多,又加上参数的多种多样,就算是实打实的高手也没有十足的把握能把各种命令运用得炉火纯青,就别说那些初学者了. 面对这些复杂难记的命令,网上的一些工具如 K ...

  9. 工会成立100周年纪念,开发职工健身AI运动小程序、APP方案推荐

    时光荏苒,转眼间2025年五一将至,这一年对于中华全国总工会而言,具有非凡的历史意义--它将迎来成立100周年的辉煌时刻.为了庆祝这一盛事,各级工会组织将精心筹备了一系列丰富多彩.形式多样的纪念活动, ...

  10. FastAPI与SQLAlchemy同步数据库集成

    title: FastAPI与SQLAlchemy同步数据库集成 date: 2025/04/15 01:27:37 updated: 2025/04/15 01:27:37 author: cmdr ...