康复训练day2——2024牛客寒假集训营6

一道很好的构造题,受益匪浅。

 链接:F-命运的抉择_2024牛客寒假算法基础集训营6 (nowcoder.com)​​​​​​


题意:


题解 (并查集 + 思维):

首先将存在1的情况特判掉,我们的数组的元素都是>= 2的,我们发现所有的数字都是<= 1e6的所以我们可以根据筛法快速质因数分解,对于任意两个数x,y >= 2,gcd(x, y) >= 2都满足一定存在相同的质因子, 我们依次处理一下数组中每一个数字的质因数,将它们的并查集数组初始化,然后再依次将每个数的质因数合并在一起,这样有交集的质因数就会全部合在一个位置上,然后我们取第一个数的其中一个质因数,拿到它的祖先,再去数组中遍历一遍,找到和同祖先的点我们就标记为Ture, 最后如果数量是n就是无解,否则就是有解。


代码:

#include <bits/stdc++.h>
#define ff first 
#define ss second 
// #define int long long 
using namespace std;
using PII = pair<int, int>; 
using ll = long long; 
constexpr int N = 1e6 + 10, mod = 1e9 + 7; 
constexpr int inf = 0x3f3f3f3f; 
int n, m;
int a[N]; 
int q[N], cnt, p[N]; 
bool st[N], si[N]; 
int z[N]; 
int find(int x) {if(x != z[x]) z[x] = find(z[x]); return z[x]; 
} 
void solve() {scanf("%d",&n);for(int i = 1; i <= n; i ++ ) { scanf("%d",&a[i]);if(a[i] < a[1]) swap(a[1], a[i]); }if(a[1] == 1) {printf("%d %d\n",1,n-1);cout << 1 << endl; for(int i = 2; i <= n; i ++ ) printf("%d ", a[i]);printf("\n"); return; }for(int i = 1; i <= n; i ++ ) {int x = a[i]; si[i] = 0; while(x > 1) {int t = p[x]; z[t] = t; while(x % t == 0) x /= t; }}for(int i = 1; i <= n; i ++ ) {int x = a[i]; int r = -1; while(x > 1) {int t = p[x];if(r == -1) r = t; else z[find(t)] = find(r); while(x % t == 0) x /= t; }}int x = a[1], aim; int t = p[x];  aim = find(t); for(int i = 1; i <= n; i ++ ) {int x = a[i];bool flag = 0; while(x > 1) {int t = p[x]; if(find(t) == aim) {flag = 1; break; }while(x % t == 0) x /= t; }if(flag) si[i] = 1; }cnt = 0; for(int i = 1; i <= n; i ++ ) if(si[i]) cnt++;if(cnt == n) puts("-1 -1");else {printf("%d %d\n", cnt, n - cnt); for(int i = 1; i <= n; i ++ ) if(si[i]) printf("%d ", a[i]); printf("\n"); for(int i = 1; i <= n; i ++ ) if(!si[i]) printf("%d ", a[i]); printf("\n"); }
}
signed main() {for(int i = 2; i <= 1e6; i ++ ) {if(!st[i]) q[cnt ++] = i, p[i] = i; for(int j = 0; q[j] <= 1e6 / i; j ++ ) {st[i * q[j]] = 1; p[i * q[j]] = q[j]; if(i % q[j] == 0) break; }}int ts = 1; scanf("%d",&ts); while(ts -- ) solve(); return 0; 
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/704983.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024-02-26(Spark,kafka)

1.Spark SQL是Spark的一个模块&#xff0c;用于处理海量结构化数据 限定&#xff1a;结构化数据处理 RDD的数据开发中&#xff0c;结构化&#xff0c;非结构化&#xff0c;半结构化数据都能处理。 2.为什么要学习SparkSQL SparkSQL是非常成熟的海量结构化数据处理框架。 学…

在having、select子句中使用子查询

目录 在having子句中使用子查询 统计出部门平均工资高于公司平均工资的部门编号、平均工资、部门人数 在select子句中使用子查询 查询每个员工的编号、姓名、职位、部门名称 Oracle从入门到总裁:https://blog.csdn.net/weixin_67859959/article/details/135209645 在havin…

销售线索获取 如何查找更多的销售线索平台

在进行销售工作时&#xff0c;寻找潜在客户和销售线索是非常重要的。只有及时地发现客户的需求和问题&#xff0c;才能更好地进行销售和提供服务。然而&#xff0c;在如今的市场环境中&#xff0c;客户的信息被广泛地分散在各个渠道和媒介上&#xff0c;如果仅靠人工搜索和整理…

如何优化Node.js应用的性能

随着Node.js在Web开发领域的广泛应用&#xff0c;越来越多的开发者开始关注如何优化Node.js应用的性能。优化Node.js应用的性能可以提升应用的响应速度&#xff0c;降低资源消耗&#xff0c;提升用户体验。在本文中&#xff0c;我们将探讨一些优化Node.js应用性能的方法和技巧。…

Nginx重写功能和反向代理

目录 一、重写功能rewrite 1. ngx_http_rewrite_module模块指令 1.1 if 指令 1.2 return 指令 1.3 set 指令 1.4 break 指令 2. rewrite 指令 3. 防盗链 3.1 实现盗链 3.2 实现防盗链 4. 实用网址 二、反向代理 1. 概述 2. 相关概念 3. 反向代理模块 4. 参数配置…

亿道丨三防平板丨如何从多方面选择合适的三防加固平板?

在如今这个信息爆炸的时代&#xff0c;移动设备已经成为我们生活和工作的必备工具。然而&#xff0c;在一些特殊的场合中&#xff0c;普通的平板电脑可能无法满足需求&#xff0c;比如工厂车间、野外作业、极端天气等环境下。此时&#xff0c;三防平板就成了不二之选。那么&…

SpringCloud-Docker安装与详解

Docker 是一款强大的容器化平台&#xff0c;通过其轻量级的容器技术&#xff0c;使应用程序的开发、部署和管理变得更加便捷和高效。本文将深入探讨 Docker 的安装过程&#xff0c;并详细解析其基本概念、组件及常用命令&#xff0c;以帮助读者充分理解和熟练使用 Docker。企业…

mac安装zookeeper

下载地址&#xff1a; http://archive.apache.org/dist/zookeeper/ 注意&#xff1a;由于Zookeeper从3.5.5版本开始&#xff0c;带有bin名称的包才是我们想要的下载可以直接使用的里面有编译后的二进制的包&#xff0c;而之前的普通的tar.gz的包里面是只是源码的包无法直接使…

Laravel04 eloquent

eloquent 1. eloquent2. 创建eloquent model 以及 取数据 1. eloquent 文档地址&#xff1a; https://learnku.com/docs/laravel/8.x/eloquent/9406 下面是我们&#xff0c;通过laravel的DB类从数据库中获取了post记录&#xff0c;那么有没有可能我们直接获取一个post对象&am…

Ps:索引颜色模式

Ps菜单&#xff1a;图像/模式/索引颜色 Image/Mode/Indexed Color 索引颜色 Indexed Color模式可生成最多 256 种颜色的 8 位图像文件。 这种颜色的限制使得索引颜色模式的图像文件相比于全彩图像&#xff08;如 RGB 颜色模式下的图像&#xff09;具有更小的文件大小&#xff0…

使用mumu模拟器开启调试安卓pwa程序环境,配置谷歌环境,并增加pwa安卓/苹果/PC电脑安装流程

环境配置 当你想开发pwa程序时&#xff0c;手上没有安卓手机怎么办&#xff1f;使用mumu安卓模拟器也是可以的&#xff0c;使用安卓模拟器后&#xff0c;可能自带的浏览器不支持pwa&#xff0c;还需要安装chrom浏览器&#xff0c;当你安装好chrom浏览器后&#xff0c;打开又提…

利用项目管理软件规划的成功之路

项目开发对于任何类型的项目都是一个有用的过程。软件开发项目、建筑项目、运输项目和变更管理项目都可以从这种方法提供的结构、指导和策略中获益。 项目开发涉及规划项目时间表、投资资源以及安排团队成员的时间。与项目管理一样&#xff0c;项目开发贯穿项目始终&#xff0…

用 React 实现搜索 GitHub 用户功能

用 React 实现搜索 GitHub 用户功能 在本篇博客中&#xff0c;我们将介绍如何在 React 应用中搜索 GitHub 用户并显示他们的信息。 创建 React 应用 首先&#xff0c;我们使用 Create React App 创建一个新的 React 应用。Create React App 是一个快速搭建 React 项目的工具…

MATLAB练习题:并行计算的parfor循环

​讲解视频&#xff1a;可以在bilibili搜索《MATLAB教程新手入门篇——数学建模清风主讲》。​ MATLAB教程新手入门篇&#xff08;数学建模清风主讲&#xff0c;适合零基础同学观看&#xff09;_哔哩哔哩_bilibili 在MATLAB中&#xff0c;parfor&#xff08;Parallel for&…

30-k8s集群的七层代理-ingress资源(进阶知识)

一、ingress概述 1&#xff0c;引发问题 目前使用svc资源做网络暴露&#xff0c;使用nodeport类型&#xff0c;一个业务对应一个宿主机端口&#xff0c;那么如果业务多了&#xff0c;所占用的宿主机端口也就多了&#xff0c;虽然说宿主机端口一般情况下都是够用的&#xff0c;…

python自动化管理和zabbix监控网络设备(有线网络和路由配置部分)

目录 目录 一、拓扑图 二、core-sw1 三、core-sw2 四、sum-sw1 五、sum-sw2 六、FW1 七、DMZ-SW1 结语 一、拓扑图 二、core-sw1 sys sysname core-sw1 vlan batch 10 20 30 40 50 60 100 vlan batch 200 210 220 230 240 250 stp region-configuration region-name…

【Java设计模式】一、工厂模式、建造者模式、原型设计模式

文章目录 1、简单工厂模式2、工厂方法模式3、抽象工厂模式4、建造者模式5、原型设计模式 设计模式即总结出来的一些最佳实现。23种设计模式可分为三大类&#xff1a; 创建型模式&#xff1a;隐藏了创建对象的过程&#xff0c;通过逻辑方法进行创建对象&#xff0c;而不是直接n…

贝叶斯核机器回归拓展R包:bkmrhat

1.摘要 bkmrhat包是用于扩展bkmr包的贝叶斯核机器回归&#xff08;Bayesian Kernel Machine Regression, BKMR&#xff09;分析工具&#xff0c;支持多链推断和诊断。该包利用future, rstan, 和coda包的功能&#xff0c;提供了在贝叶斯半参数广义线性模型下进行identity链接和 …

CUDA编程 - 用向量化访存优化 - Cuda elementwise - Add(逐点相加)- 学习记录

Cuda elementwise - Add 一、简介1.1、ElementWise Add1.2、 float4 - 向量化访存 二、实践2.1、如何使用向量化访存2.1、简单的逐点相加核函数2.2、ElementWise Add float4&#xff08;向量化访存&#xff09;2.3、完整代码 一、简介 1.1、ElementWise Add Element-wise 操作…

替代 Intercom 和 Zendesk: 开源的客户互动套件 | 开源日报 No.183

chatwoot/chatwoot Stars: 17.8k License: NOASSERTION chatwoot 是一个开源的客户互动套件&#xff0c;是 Intercom、Zendesk、Salesforce Service Cloud 等的替代品。 该项目主要功能、关键特性和核心优势包括&#xff1a; 支持多种对话渠道&#xff0c;如网站、Facebook、…