【2020.11.28提高组模拟】T1 染色(color) 题解
【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) 题解的更多相关文章
- 【2020.11.28提高组模拟】T1染色(color)
[2020.11.28提高组模拟]T1染色(color) 题目 题目描述 给定 \(n\),你现在需要给整数 \(1\) 到 \(n\) 进行染色,使得对于所有的 \(1\leq i<j\leq ...
- 【2020.11.28提高组模拟】T2 序列(array)
序列(array) 题目描述 给定一个长为 \(m\) 的序列 \(a\). 有一个长为 \(m\) 的序列 \(b\),需满足 \(0\leq b_i \leq n\),\(\sum_{i=1}^ ...
- JZOJ 6904. 【2020.11.28提高组模拟】T3 树上询问(query)
题目 你有一棵 \(n\) 节点的树 ,回答 \(m\) 个询问,每次询问给你两个整数 \(l,r\) ,问存在多少个整数 \(k\) 使得从 \(l\) 沿着 \(l \to r\) 的简单路径走 ...
- 【2020.11.30提高组模拟】剪辣椒(chilli)
剪辣椒(chilli) 题目描述 在花园里劳累了一上午之后,你决定用自己种的干辣椒奖励自己. 你有n个辣椒,这些辣椒用n-1条绳子连接在一起,任意两个辣椒通过用若干个绳子相连,即形成一棵树. 你决定分 ...
- 【2020.11.30提高组模拟】删边(delete)
删边(delete) 题目 题目描述 给你一棵n个结点的树,每个结点有一个权值,删除一条边的费用为该边连接的两个子树中结点权值最大值之和.现要删除树中的所有边,删除边的顺序可以任意设定,请计算出所有方 ...
- JZOJ 【2020.11.30提高组模拟】剪辣椒(chilli)
题目大意 给出一棵 \(n\) 个节点的树,删去其中两条边 使得分出的三个子树大小中最大与最小的差最小 分析 先一边 \(dfs\) 预处理出以 \(1\) 为根每个点的 \(size\) 然后按 \ ...
- 【2020.12.03提高组模拟】A组反思
估计:40+10+0+0=50 实际:40+10+0+0=50 rank40 T1 赛时看到\(n,m\leq9\),我当机立断决定打表,暴力打了几个点之后发现在\(n\ne m\)且\(k\ne0\ ...
- 【2020.12.01提高组模拟】A组反思
105,rk45 T1 赛时一开始先打了\(m=0\)的情况,也就是普通的卡特兰数,然后打了暴力,样例过了,把样例改改就不行了,原因没有保证是枚举的是合法的出栈序列 得分:\(WA\&TLE1 ...
- 11.5NOIP2018提高组模拟题
书信(letter) Description 有 n 个小朋友, 编号为 1 到 n, 他们每人写了一封信, 放到了一个信箱里, 接下来每个人从中抽取一封书信. 显然, 这样一共有 n!种拿到书信的情 ...
- 【2020.12.02提高组模拟】A组反思
55,rk47 T1 赛时先想了\(trie\),想到不一定是前缀,然后就放弃转为打暴力 得分:\(RE22\) 正解是只用判断\(i\)与\(i+1\)的关系,那么只有两种情况,判断一下然后\(dp ...
随机推荐
- Windows编程----线程管理
系统中,进程主要有两部分组成:进程内核对象和进程地址空间.操作系统通过进程内核对象来管理进程,进程地址空间用于维护进程所需的资源:如代码.全局变量.资源文件等. 那么线程也是有两部分组成:线程内核对象 ...
- Win32控制台获取可执行程序的快捷方式的目标位置、起始位置、快捷键、备注等
Win32控制台获取可执行程序的快捷方式的目标位置.起始位置.快捷键.备注等,示例如下图: #include <iostream> #include <atlstr.h> #i ...
- Git安装与Git GUI的使用
一.下载安装包 官网:https://git-scm.com/downloads(下载慢) 或 https://pc.qq.com/search.html#!keyword=git,本人使用的是Git ...
- kubernetes 容器编排系统
前言 docker解决了打包和隔离的问题,但是在docker集群中我们需要解决更多的问题,如调度(容器在哪运行).生命周期及健康状况(确保容器在无错的情况下运行).服务发现(容器所处位置,和容器通信) ...
- 一次Java后端服务间歇性响应慢的问题排查记录
分享一个之前在公司内其它团队找到帮忙排查的一个后端服务连接超时问题,问题的表现是服务部署到线上后出现间歇性请求响应非常慢(大于10s),但是后端业务分析业务日志时却没有发现慢请求,另外由于服务容器li ...
- Win10禁用UWP
Win10禁用UWP, HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\WindowsStore DisableStoreApps REG_DWORD 0 ...
- Wolfram常用计算
1.方程与方程组 例1:求解方程 参考表达式: solve x^3 + 2x^2 - 6x + 5 = 0 real 求解所有根 例2:求解方程: 参考表达式: solve ax^2+bx+c=0 注 ...
- Vue3+Ant-design项目启用ts/typescript
Ant-design官方文档提供了js和ts两种案例,按照文档给项目install ant-design后写了个组件编译时发现只要加上`<script lang="ts"&g ...
- JuiceFS v1.3-beta1:全面优化 SQL 数据库支持,十亿级元数据管理新选项
JuiceFS v1.3-beta 今天正式发布.在这个版本中,除了进行了大量使用体验优化和 bug 修复外,新增如下特性: 新增 Python SDK:这是一个从企业版移植过来的特性,旨在支持 FU ...
- redis 中文乱码
查询数据时中文乱码 解决方法: 使用 ./redis-cli 登录的时候加上 --raw参数 ./redis-cli --raw