【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. Navicat 如何将表恢复默认状态下

    场景: 测试一套流程后,造测试数据非常麻烦的情况下,如何通过更改数据库为默认情况即初始表数据 案例: 比如表原有结构如下图(一) 修改后数据如下图(二): 需求:将图二数据恢复到图一内容下 操作思想: ...

  2. 【Bug记录】uniapp开发时pages.json和manifest.json注释报错解决方案

    pages.json和manifest.json注释报错问题解决 增强 pages.json和 manifest.json 开发体验 json文件写注释 用 VsCode 开发 uni-app 项目时 ...

  3. PHP的curl获取header信息

    PHP的curl功能十分强大,简单点说,就是一个PHP实现浏览器的基础. 最常用的可能就是抓取远程数据或者向远程POST数据.但是在这个过程中,调试时,可能会有查看header的必要. echo ge ...

  4. selenium自动化测试+OCR-获取图片页面小说

    随着爬虫技术的发展,反爬虫技术也越来越高. 目前有些网站通过自定义字体库的方式实现反爬,主要表现在页面数据显示正常,但是页面获取到的实际数据是别的字符或者是一个编码.这种反爬需要解析网站自己的字体库, ...

  5. 【译】Visual Studio(v17.13)中新的调试和分析特性

    最新的 Visual Studio 更新(v17.13)带来了一组强大的调试和分析功能,旨在加快故障排除速度,使其更高效.借助本次发布的 AI 驱动功能,变量分析和数据检查更智能.更直观,问题更容易识 ...

  6. Linux 下如何修改密码有效期?

    有时我们连接远程服务器的时候,提示密码过期,需要修改密码才能登录,这时可以用chage命令来调整下用户密码的有效期,使用户可以继续使用. chage命令 chage命令用于查看以及修改用户密码的有效期 ...

  7. python-argparse用法简介

    1. argparse介绍 argparse是Python标准库中用于解析命令行参数的模块.它提供了一种简洁而灵活的方式来处理命令行参数,包括选项(可选参数)和位置参数(必需参数) 2. argpar ...

  8. Ollama本地部署大模型总结

    日拱一卒,功不唐捐 今天计划对之前ollama系列做个回顾,从如何部署到API使用,整理到一篇内容中,提供给大家参考. 安装指南 第一步:安装ollama 我们可以从官网下载ollama,此步骤支持w ...

  9. Linux基本开发环境配置git,c++,nodejs,nginx

    Linux基本开发环境配置 前一篇文章配置了基本的SSH,本文来讲讲关于基本的开发环境的配置,包括git,c,c++,nodejs,nginx. 安装git和配置无密码登录github yum ins ...

  10. AndrodStudio构建时报错Could not find com.android.tools.build:gradle:xxx

    检查配置的版本号在maven仓库里有没有. maven仓库地址: https://repo1.maven.org/maven2/com/android/tools/build/gradle/ 选择需要 ...