[nowcoder5669H]Harder Gcd Problem
2024-08-27 22:46:28
题目相当于问1-n中最多能选出多少对不互素无交集的二元组,并要求方案
构造:将所有数放入其最小质因子对应的集合,若素数p所对应的集合元素个数为奇数且$p\ne 2$且$2p\le n$,那么就将$2p$从2对应的集合移到p对应的集合,最终每一个集合中选择$\frac{|S|}{2}$(下取整)对即可
关于这一构造的正确性证明:
1.合法性:素数p所对应的集合中的每一个元素都有公素因子p,因此两两不互素;同时每一个数最多只存在于一个集合,因此不会重复
2.最优性:首先对于$2p>n$的素数p和1都无法参与答案,那么剩余元素的最小质因子一定在$[2,\frac{n}{2}]$中,而通过构造中的调整一定可以使得$(2,\frac{n}{2}]$中的集合元素个数都为偶数,因此最多剩下1个数,不存在更多的匹配
1 #include<bits/stdc++.h>
2 using namespace std;
3 #define N 200005
4 vector<int>v,ans[N];
5 int E,t,n,p[N],mn[N],vis[N],bl[N];
6 int main(){
7 for(int i=2;i<N-4;i++){
8 if (!vis[i]){
9 p[++p[0]]=i;
10 mn[i]=i;
11 }
12 for(int j=1;(j<=p[0])&&(i*p[j]<N-4);j++){
13 vis[i*p[j]]=1;
14 mn[i*p[j]]=p[j];
15 if (i%p[j]==0)break;
16 }
17 }
18 scanf("%d",&t);
19 while (t--){
20 scanf("%d",&n);
21 for(int i=1;i<=n;i++)vis[i]=0;
22 for(int i=2;i<=n;i++){
23 vis[mn[i]]++;
24 bl[i]=mn[i];
25 }
26 for(int i=1;(i<=p[0])&&(p[i]<=n);i++)
27 if ((vis[p[i]]&1)&&(p[i]<=n/2))bl[2*p[i]]=p[i];
28 for(int i=1;i<=n;i++)ans[i].clear();
29 for(int i=2;i<=n;i++)ans[bl[i]].push_back(i);
30 int sum=0;
31 for(int i=2;i<=n;i++)sum+=ans[i].size()/2;
32 printf("%d\n",sum);
33 for(int i=1;(i<=p[0])&&(p[i]<=n);i++)
34 for(int j=0;j+1<ans[p[i]].size();j+=2)printf("%d %d\n",ans[p[i]][j],ans[p[i]][j+1]);
35 }
36 }
最新文章
- 解决js动态改变dom元素属性后页面及时渲染问题
- HTML5_03之Canvas绘图
- ZeroMQ接口函数之 :zmq_msg_init - 初始化一个空的ZMQ消息结构
- 【转】IP协议详解之子网寻址、子网掩码、构造超网
- Android 短信的备份
- [NOIP2014] 提高组 洛谷P1941 飞扬的小鸟
- UIDatePicker 日期/时间选取器(滚轮)—IOS开发
- 【OpenCV】全景拼接
- <;s:iterator>; 对list操作的一种方法
- 【MySQL】MySQL回滚工具
- 理解C#系列 / 核心C# / 变量
- 【字符串排序,技巧!】UVa 10905 - Children’s Game
- JavaScript面向对象继承方法
- 设置div中文字超出时自动换行
- 具体解释EBS接口开发之物料导入API
- php生成签名及验证签名
- 急急如律令!火速搭建一个C#即时通信系统!(附源码分享——高度可移植!)
- 在ASP.NET MVC里对Web Page网页进行权限控制
- linux清除缓存
- SpringBoot集成redis,使用@Cachexxxx
热门文章
- MySQL8 根据某属性查询字段排名由自定义变量到rank()的变动
- 洛谷3628 APIO2010特别行动队(斜率优化)
- 专业网络损伤仪HoloWAN meme只需5999元!
- 全网详细JAVA知识点干货学习路线目录,值得收藏学习!
- 力扣 - 剑指 Offer 53 - I. 在排序数组中查找数字 I
- Java:抽象类和接口小记
- Alpha阶段发布声明
- Vue项目搭建常用的配置文件,request.js和vue.config.js
- 热身训练2 GCD
- 【BZOJ2070】列队春游———[组合数学+概率DP]