题目链接:点击查看

题目大意:给出一个 n ,表示 1 ~ n 的 n 个数字,现在要求选出尽可能多的两两匹配,使得每组匹配的 gcd 都大于 1,输出最多能有多少组匹配,以及方案

题目分析:

这样的贪心策略肯定是最优的,除了 p * 2 > n 的质数和 1 ,最多会有 1 个未匹配的数,其他的数都会两两匹配

代码:

#include<iostream>
#include<cstdio>
#include<string>
#include<ctime>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<stack>
#include<climits>
#include<queue>
#include<map>
#include<set>
#include<sstream>
#include<cassert>
#include<bitset>
using namespace std;typedef long long LL;typedef unsigned long long ull;const int inf=0x3f3f3f3f;const int N=2e5+100;bool p[N],vis[N];void init()
{for(int i=2;i<N;i++)if(!p[i])for(int j=i+i;j<N;j+=i)p[j]=true;
}int main()
{
#ifndef ONLINE_JUDGE
//  freopen("data.in.txt","r",stdin);
//  freopen("data.out.txt","w",stdout);
#endif
//  ios::sync_with_stdio(false);init();int w;cin>>w;while(w--){int n;scanf("%d",&n);memset(vis,false,n+5);vector<pair<int,int>>ans;for(int i=n/2;i>=2;i--)//枚举小于等于n/2的质数{if(p[i])continue;int cnt=0;//有多少个含有质因子i且未被用过的合数for(int j=i;j<=n;j+=i)cnt+=!vis[j];if(i!=2&&cnt&1)//如果有奇数个可以匹配的合数,那么将2的倍数提出来vis[i*2]=true;int pre=-1;for(int j=i;j<=n;j+=i){if(vis[j])continue;vis[j]=true;if(pre==-1)pre=j;else{ans.emplace_back(pre,j);pre=-1;}}if(cnt&1)//回溯标记vis[i*2]=false;}printf("%d\n",ans.size());for(int i=0;i<ans.size();i++)printf("%d %d\n",ans[i].first,ans[i].second);}return 0;
}

牛客多校4 - Harder Gcd Problem(构造+贪心)相关推荐

  1. 牛客多校4 - Basic Gcd Problem(预处理质因子的个数)

    题目链接:点击查看 题目大意:给出一个函数,有 t 次询问,每次询问给出相应的参数,要求计算函数值 题目分析:打个表不难将函数化简为: ,x 为 n 中的质因子个数,而质因子的个数可以 n * sqr ...

  2. 牛客多校3 - Fraction Construction Problem(扩展欧几里得)

    题目链接:点击查看 题目大意:给出 a 和 b ,求解满足条件的 c,d,e,f ,使得: d < b f < b c,e 均为小于等于 4e12 的正整数 题目分析:分情况讨论一下,首先 ...

  3. 牛客多校第四场【B-Basic Gcd Problem】

    牛客多校第四场[B-Basic Gcd Problem] 题目链接:https://ac.nowcoder.com/acm/contest/5669/B 思路:先要理解公式,多看几个数据基本就会有点想 ...

  4. 牛客多校第三场 B【Classical String Problem】

    牛客多校第三场 B[Classical String Problem] 链接:https://ac.nowcoder.com/acm/contest/5668/B 来源:牛客网 题目描述 Given ...

  5. 2022牛客多校(十)

    2022牛客多校(十) 一.比赛小结 比赛链接:"蔚来杯"2022牛客暑期多校训练营10 二.题目分析及解法(基础题) F.Shannon Switching Game? 题目链接 ...

  6. 【2020暑假牛客多校(一)】

    牛客多校 Home AC:2,rank517AC : 2, rank517AC:2,rank517 7.127.127.12 题单 F(1271/5027)F(1271/5027)F(1271/502 ...

  7. 2020牛客多校联赛第四场 (BFH)

    文章目录 B:Basic Gcd Problem 题目 翻译 例子 大意 思路 代码 F:Finding the Order 题目 翻译 例子 大意 思路 代码 H:Harder Gcd Proble ...

  8. 牛客多校三 B Black and white

    牛客多校三 B Black and white 在n*m的棋盘上,每个格子有一个数,初始可以选一定的格子标记为黑色,在任意四个形如(i1, j1)(i1, j2)(i2, j1)(i2, j2)的格子 ...

  9. Knapsack Cryptosystem(2019牛客多校折半查询)

    链接:https://ac.nowcoder.com/acm/contest/889/D 来源:牛客网 Amy asks Mr. B problem D. Please help Mr. B to s ...

最新文章

  1. 鸿蒙os内测版应用名称,鸿蒙OS2.0发布,只有两款机型可以申请内测
  2. java简单通讯录的实现02person类_Java自定义类加载器实现不同版本的类加载
  3. Asp.net 字符串操作基类(安全,替换,分解等)
  4. 程序员看片必备神器!包邮送一台!!
  5. SpringBoot异常处理-SimpleMappingExceptionResolver
  6. 【渝粤题库】陕西师范大学292391 金融机构管理 作业(专升本)
  7. Angular问题03 @angular/material版本问题
  8. 程序员成熟的标志《程序员成长路线图:从入门到优秀》
  9. webrtc笔记(1): 基于coturn项目的stun/turn服务器搭建
  10. Document、HTMLDocument关系的探究
  11. HDU1434 幸福列车【模拟+优先队列】
  12. Mac 上管理多个 java 版本
  13. 软件工程第0次作业 | 热身
  14. 为什么Linux CFS调度器没有带来惊艳的碾压效果
  15. 双曲调频信号matlab仿真,matlab 实现线性调频信号以及分析处理
  16. html5自动调用js函数,从html文件中的外部js文件调用Javascript函数
  17. 六步换向两两导通和三三导通的区别2
  18. MySQL使用JDBC高级操作和事务
  19. 开机就提示“请安装TCP/IP协议,error=10106”的解决的方法
  20. php 站内信 类

热门文章

  1. mysql修改存储引擎报错,MySQL改变表的存储引擎
  2. 网页上点击java没反应_JavaScript_javascript:void(0)点击登录没反应怎么解决,巧用批处理解决IE不支持JavaScri - phpStudy...
  3. Nginx关于浏览器缓存相关的配置指令
  4. 微信支付 - 提供支付中心商户订单查询
  5. SpringMVC拦截器-快速入门(应用)
  6. maven依赖管理的概念
  7. 有状态服务和无状态服务的区别与联系
  8. 文件系统对性能的影响
  9. 设计模式之_动态代理_01
  10. pic单片机低电压检测_pic单片机汇编语言讲解(上)