题意:

给你 n 个数,分别为 a1、a2、...、ai、... an,现在从这n个数中删去p个数,使剩下的数的gcd变大。求最小的p。

思路:

一开始的思路是想用贪心做,先求出所有数字的gcd,然后将数字排序,再依次求gcd,如果与当前这个数字求出的gcd等于开始的那个gcd,就将这个数字删掉。

然后wa 8,很明显这个方法是错的,比如 2 4 7 14 21 这个序列,用这种方法就会出错。

接下来是正解。N = 1.5*1e7。

先对所有数求出gcd,然后对1-N内所有数进行标记,若题目中给出了 a[i],则 vis[a[i]]++,然后采用一种类似埃氏筛的方法。

i 从gcd+1到N进行循环,对于p[i] == 0,就将 i 的所有倍数k,p[k]标记为1,然后记录 i 的所有倍数中有cnt个在最开始题目给出的数列中出现了,那么对于这cnt个数,他们的gcd一定大于初始数列的gcd,因此问题就转化为了求cnt的最大值。

本问题就解决了。

反思:

这道题拿到手上之后,思路先是跑到了最简单的贪心,然后wa了之后,开始将每个数唯一分解进行筛数,与正解思想类似,但是正解是用所有数去筛,而唯一分解是用素数去筛,过了评测,但是终测挂了。

结束之后看到正解之后还是有一些小遗憾的,毕竟正解代码非常短......(比唯一分解什么的短多了......)

以后写题还是要考虑清楚,不要进行冗余操作,也不要漏操作。

代码:

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
#define rep(i,a,b) for(int i = a;i <= b;i++)
using namespace std;
const int N = 1.5*1e7+1000;int a[N],b[N];
int n;int gcd(int a,int b)
{return b == 0 ? a:gcd(b,a%b);
}int main()
{int d;scanf("%d",&n);scanf("%d",&d);a[d]++;rep(i,2,n){int x;scanf("%d",&x);a[x]++;d = gcd(d,x);}int ans = 0;rep(i,d+1,N-500){if(b[i] == 0){int cnt = 0;for(int j = i; j <= N-500; j += i){b[j] = 1;cnt += a[j];}ans = max(ans,cnt);}} if(ans == 0)printf("-1\n");else printf("%d\n",n-ans);return 0;
}

【数论思维题】Enlarge GCD【Codeforces Round #511 (Div. 2)】相关推荐

  1. Codeforces Round #511 (Div. 1) 题解

    在学校熬夜打$cf$找死啊. A - Enlarge GCD 先求个$gcd$,然后对于每个$a[i]$都除以$gcd$. 之后我们只需要统计每个质数整除的个数即可. 因为带上所有数的$gcd$一定是 ...

  2. 第一次打CF的感受(附A-C题题解) -Codeforces Round #764 (Div. 3)

    目录 A题-在子集上加一 B题-制作AP C题- 除以2和排列 个人感受 A题-在子集上加一 题目 Polycarp得到了一个整数数组a[1-n]作为礼物.现在,他希望执行一定数量的操作(可能为零), ...

  3. Codeforces Round #777 (Div. 2) 简训

    Codeforces Round #777 (Div. 2) 简训 导语 涉及的知识点 题目 A Madoka and Math Dad B Madoka and the Elegant Gift C ...

  4. Codeforces Round #738 (Div. 2) A--D1

    原题戳这里Codeforces Round #738 (Div. 2) A. Mocha and Math 题目大意 通过对某个区间内的数进行题目所给操作 希望最小化序列中的最大值 思路 万恶的位运算 ...

  5. Codeforces Round #694 (Div. 1 + Div2)(A ~ H,8题全,超高质量题解)【每日亿题】2021/2/1、2/2

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 [每日亿题]Codeforces Round #694 (Div. 1 + Div2)(A ~ ...

  6. Codeforces Round #701 (Div. 2) A ~ F ,6题全,超高质量良心题解【每日亿题】2021/2/13

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 A - Add and Divide B - Replace and Keep Sorted C ...

  7. Codeforces Round #698 (Div. 2)(A ~ F)6题全,超高质量题解)【每日亿题】2021/2/4

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 [每日亿题]Codeforces Round #698 (Div. 2)(A ~ F)6题全,超 ...

  8. Codeforces Round #701 (Div. 2)赛后补题报告(A~D)

    Codeforces Round #701 (Div. 2)赛后补题报告(A~D) A. Add and Divide 原题信息 http://codeforces.com/contest/1485/ ...

  9. Codeforces Round 700 (Div. 2) B题 英雄杀怪兽

    Codeforces Round 700 (Div. 2) B题 链接: https://codeforces.com/contest/1480/problem/B 大致意思: n组数据,每组数据的第 ...

  10. Codeforces Round #699 (Div. 2) (A ~ F)6题全,超高质量良心题解【每日亿题】2021/2/6

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #699 (Div. 2) (A.B.C)[每日亿题]2021/2/ ...

最新文章

  1. 分布式系统互斥性与幂等性问题的分析与解决
  2. 为了追求更快,CPU、内存、I/O都做了哪些努力?
  3. Linux page allocation failure 的问题处理 - zone_reclaim_mode
  4. Android ListView重写Adapter
  5. python定义16进制数组_python 文件转成16进制数组的实例
  6. JAVA数组Java StringBuffer 和 StringBuilder 类
  7. Mendix:低代码开发平台 让未来工作模式日渐明朗
  8. 轻量级PHP接口框架PhalApi开源接口框架 v2.17.1源码
  9. ERP框架开发中的License许可验证机制设计与实现 (包含源代码下载)
  10. java点击图片发出声音_[Java教程]点击放大图片
  11. nvidia-smi每0.1s实时显示显存使用情况,且数字变化处有白底
  12. Redhat 6.5安装JDK和Tomcat小记
  13. 计算机技术能力校本培训总结,教师现代教育技术校本培训总结(2篇)
  14. GIS开发进阶之路(十三) Activator和new的区别、GP工具输入参数问题、写入JObject到json文件、ArcGIS Server REST API、动态规划、贪心算法
  15. 防火墙的访问控制策略
  16. html扫码支付,WEB端第三方支付接入 - 支付宝 - 扫码支付
  17. 渲染算法学习(四)-- Environment Lighting
  18. Android 11源码 Framework修改默认usb连接模式为MTP模式
  19. 【jiasuba】高效办公 网络应用相关的Excel技巧
  20. 弹性方法计算连续梁板内力_连续梁、板按塑性法内力计算.ppt

热门文章

  1. Windows 7 SP1开发完毕 已进入测试阶段
  2. ISA2000资料大全(详细)
  3. android x86显卡驱动,全系列显卡精简版纯驱动(Windows_6.x_VGA_Drivers_lite_x86x64)(2016.09.12)...
  4. 平板Android调试打开log,Android 调试日志
  5. 1043 Is It a Binary Search Tree (25 分) BST反转?不反转 遍历+vector
  6. Python(二):基本数据类型、序列的基本操作
  7. Java将xml转docx,java对象与xml间的转换.docx
  8. linux密钥链接失败的原因,linux中ssh密钥登录失败问题解决办法
  9. steam服务器维护6月28,绝地求生6月28日维护更新公告 绝地求生6月28日更新内容汇总...
  10. Label高度根据内容变化SnapKi