题目

将 \(n\) 个数分为两组,使得两组的GCD都为1,求具体的分组情况


分析

考虑直接打乱 \(n\) 个数,如果能使第一组GCD减小就减小,否则丢到第二组,

由于打乱后出错的概率会减小,所以random_shuffle一百多次就很难出错

要不然就直接记结论吧/doge


代码

#include <cstdio>
#include <cctype>
#include <algorithm>
#define rr register
using namespace std;
const int N=100011;
int n,a[N],cho[N],rk[N],CNT=100;
inline signed iut(){
rr int ans=0; rr char c=getchar();
while (!isdigit(c)) c=getchar();
while (isdigit(c)) ans=(ans<<3)+(ans<<1)+(c^48),c=getchar();
return ans;
}
bool cmp(int x,int y){return a[x]<a[y];}
signed main(){
n=iut();
for (rr int i=1;i<=n;++i) a[i]=iut(),rk[i]=i;
sort(rk+1,rk+1+n,cmp);
do{
rr int Gcd=a[rk[1]],GCD=a[rk[2]];
cho[rk[1]]=1,cho[rk[2]]=2;
for (rr int i=3;i<=n;++i)
if (__gcd(Gcd,a[rk[i]])<Gcd)
Gcd=__gcd(Gcd,a[rk[i]]),cho[rk[i]]=1;
else GCD=__gcd(GCD,a[rk[i]]),cho[rk[i]]=2;
if (Gcd==1&&GCD==1){
printf("YES\n");
for (rr int i=1;i<=n;++i)
printf("%d%c",cho[i],i==n?10:32);
return 0;
}
random_shuffle(rk+1,rk+1+n);
}while (CNT--);
return !printf("NO");
}

#随机#CF1198F GCD Groups 2的更多相关文章

  1. [Codeforces 364D]Ghd(随机算法+gcd)

    [Codeforces 364D]Ghd(随机算法) 题面 给出n个正整数,在其中选出n/2(向上取整)个数,要求这些数的最大公约数最大,求最大公约数的最大值 分析 每个数被选到的概率\(\geq \ ...

  2. 【CodeForces】CodeForcesRound576 Div1 解题报告

    点此进入比赛 \(A\):MP3(点此看题面) 大致题意: 让你选择一个值域区间\([L,R]\),使得序列中满足\(L\le a_i\le R\)的数的种类数不超过\(2^{\lfloor\frac ...

  3. Codeforces Round #576 (Div. 1)

    Preface 闲来无事打打CF,就近找了场Div1打打 这场感觉偏简单,比赛时艹穿的人都不少,也没有3000+的题 两三个小时就搞完了吧(F用随机水过去了) A. MP3 题意不好理解,没用翻译看了 ...

  4. Codeforces Round #576 (Div. 1) 简要题解 (CDEF)

    1198 C Matching vs Independent Set 大意: 给定$3n$个点的无向图, 求构造$n$条边的匹配, 或$n$个点的独立集. 假设已经构造出$x$条边的匹配, 那么剩余$ ...

  5. iOS 并行编程:GCD Dispatch Queues

    1 简介 1.1 功能          Grand Central Dispatch(GCD)技术让任务并行排队执行,根据可用的处理资源,安排他们在任何可用的处理器核心上执行任务.任务可以是一个函数 ...

  6. 修改版: 小伙,多线程(GCD)看我就够了,骗你没好处!

    多线程(英语:multithreading),是指从软件或者硬件上实现多个线程并发执行的技术.具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能.具有这种能力的系 ...

  7. IOS随机随学

    1.Objective-C是一种面向对象的语言. 2.Objective-C类声明和实现包括两个部分:接口部分和实现部分. 3.Objective-C中方法不是在“.”运算符,而是采用“[]”运算符. ...

  8. GCD 开发

    一.简介 GCD 的全称是 Grand Centre Dispatch 是一个强大的任务编程管理工具.通过GCD你可以同步或者异步地执行block.function. 二.dispatch Queue ...

  9. ios基础篇(二十九)—— 多线程(Thread、Cocoa operations和GCD)

    一.进程与线程 1.进程 进程是指在系统中正在运行的一个应用程序,每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内: 如果我们把CPU比作一个工厂,那么进程就好比工厂的车间,一个工厂有 ...

  10. GCD的深入理解

    GCD 深入理解(一) 本文由@nixzhu翻译至raywenderlich的<grand-central-dispatch-in-depth-part-1> 虽然 GCD 已经出现过一段 ...

随机推荐

  1. win32- 窗口模板

    主要用于日常的win32窗口的测试 #include <Windows.h> #include <stdio.h> #include <iostream> usin ...

  2. 从图纸到BIM到数字孪生城市(元宇宙),易如反掌!

    当智能建模平台与虚幻引擎相遇时,它们又能碰撞出怎样的火花呢? 智能建模怎么玩? 以南昌某职业学院项目为例,这个项目总共有16栋楼,我们直接用智能建模平台"bim.zonst.com" ...

  3. python字符串模板文本处理之Template

    from string import Template s = Template('$who 在 $do') ts = s.substitute(who="张三", do=&quo ...

  4. 前后端分离项目(七):实现"添加"功能(前端视图)

    好家伙,本篇用于测试"添加"接口,为后续"用户注册"功能做铺垫   (完整代码在最后) 我们要实现"添加"功能 老样子我们先来理清一下思路, ...

  5. oracle不等于1怎么查?

    空值null比较特殊,它不能通过=或者<>进行查询,只能用is null或者is not null进行查询,例如你的数据中有null值,那么用 字段名=1,字段名<>1,字段名 ...

  6. 【Azure APIM】APIM self-host 部署在K8S中,如何更换证书呢?

    问题描述 APIM self-host(自建网关)部署在K8S中,如何在本地上传及更换证书呢? 问题解答 如果使用Self-host网关,则不支持使用上传到 APIM的 CA 根证书验证服务器和客户端 ...

  7. 【Azure 存储服务】Azure Storage Account 下的 Table 查询的性能调优

    问题描述 Azure Storage Account 下的 Table 查询的性能调优? 问题解答 因为Azure Storage Table服务(表服务) 与常规的关系型数据库不一样(例如:MySQ ...

  8. 浅入kubernetes(3):namespace、node、pod

    目前已经完成三篇关于 kubernetes 的文章: 在 Ubuntu 上安装 K8S教程 浅入kubernetes(1):Kubernetes 入门基础 浅入kubernetes(2):Kubern ...

  9. UI自动化测试中图片验证码的处理?

    首先定位验证码image的元素,然后通过element.screenshot('a.png')截图保存到本地,通过第三方接口识别本地图片验证码

  10. 手机使用termux部署alist(一起体验alist挂载云盘)

    termux安装alist 安装termux 软件Termux:https://f-droid.org/packages/com.termux/ pkg install vim pkg install ...