题目相当于问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 }
 

最新文章

  1. 解决js动态改变dom元素属性后页面及时渲染问题
  2. HTML5_03之Canvas绘图
  3. ZeroMQ接口函数之 :zmq_msg_init - 初始化一个空的ZMQ消息结构
  4. 【转】IP协议详解之子网寻址、子网掩码、构造超网
  5. Android 短信的备份
  6. [NOIP2014] 提高组 洛谷P1941 飞扬的小鸟
  7. UIDatePicker 日期/时间选取器(滚轮)—IOS开发
  8. 【OpenCV】全景拼接
  9. &lt;s:iterator&gt; 对list操作的一种方法
  10. 【MySQL】MySQL回滚工具
  11. 理解C#系列 / 核心C# / 变量
  12. 【字符串排序,技巧!】UVa 10905 - Children’s Game
  13. JavaScript面向对象继承方法
  14. 设置div中文字超出时自动换行
  15. 具体解释EBS接口开发之物料导入API
  16. php生成签名及验证签名
  17. 急急如律令!火速搭建一个C#即时通信系统!(附源码分享——高度可移植!)
  18. 在ASP.NET MVC里对Web Page网页进行权限控制
  19. linux清除缓存
  20. SpringBoot集成redis,使用@Cachexxxx

热门文章

  1. MySQL8 根据某属性查询字段排名由自定义变量到rank()的变动
  2. 洛谷3628 APIO2010特别行动队(斜率优化)
  3. 专业网络损伤仪HoloWAN meme只需5999元!
  4. 全网详细JAVA知识点干货学习路线目录,值得收藏学习!
  5. 力扣 - 剑指 Offer 53 - I. 在排序数组中查找数字 I
  6. Java:抽象类和接口小记
  7. Alpha阶段发布声明
  8. Vue项目搭建常用的配置文件,request.js和vue.config.js
  9. 热身训练2 GCD
  10. 【BZOJ2070】列队春游———[组合数学+概率DP]