解题报告:

筛出1-100000当中所有的素数 进行预处理

采用线性筛 不会请左转 P3383 【模板】线性筛素数

对于集合划分 很自然就会想到用并查集维护其连通性 对于性质相同的元素合并入同一个集合 最后统计父亲节点个数即可

刚开始有一个地方想错了

我刚开始是这样进行并查集维护的

    px=find(prime[i]);for (int j=1;j*prime[i]<=b;j++){py=find(j*prime[i]);if (px==py) continue;f[py]=px;}

然后统计在a-b区间内的祖先节点个数 乍一看很对 其实错得很离谱

仔细想一想就会知道 这样维护的话 最后的祖先节点会统一到

$prime[i]$ 上去 如果出现一个$prime[i]$不在a-b的区间内 就会

有一部分的父亲节点在区间外 那么统计答案答案时候就会丢失一部分数据

那么怎么办呢?

找出当前素数在a-b的范围表示的第一个数 然后在进行维护的时候 统一到第一个数 那么我们最后在进行扫描的时候 就可以保证对于每一个集合的父亲都在区间内

代码如下:

#include<bits/stdc++.h>
using namespace std;
int prime[100005],v[100005],tot;
int a,b,p,f[100005],px,py,ans;
void pri(){for (int i=2;i<=100000;i++){if (!v[i]){v[i]=i;prime[++tot]=i; }for (int j=1;j<=tot;j++){if (v[i]<prime[j]||i*prime[j]>100000) break;v[prime[j]*i]=prime[j];}}
}
int find(int x){if (x==f[x]) return x;return f[x]=find(f[x]);
}
int main(){pri();//for (int i=1;i<=100;i++) printf("%d\n",prime[i]);scanf("%d%d%d",&a,&b,&p);for (int i=1;i<=100005;i++) f[i]=i; for (int i=1;i<=tot;i++)if (prime[i]>=p){/*px=find(prime[i]);for (int j=1;j*prime[i]<=b;j++){py=find(j*prime[i]);if (px==py) continue;f[py]=px;*///集合合并错误 不是与素数合并为一个集合 而是与在a-b的范围类符合条件的数合并为一个集合int flag=1,tmp; for (int j=1;j*prime[i]<=b;j++){if (j*prime[i]>=a&&flag){tmp=j*prime[i];flag=0;px=find(tmp);}//寻找第一个符合条件的数 作为集合合并的对象if (j*prime[i]>=a){py=find(j*prime[i]);if (px==py) continue;f[py]=px;}       }} for (int i=a;i<=b;i++)if (f[i]==i) ans++;printf("%d\n",ans);return 0;
}

转载于:https://www.cnblogs.com/Hiraeth-dh/p/10884205.html

题解 P1621 【集合】相关推荐

  1. 洛谷题解——P1621 集合

    题目相关 题目链接 洛谷,https://www.luogu.com.cn/problem/P1621. MYOJ,http://47.110.135.197/problem.php?id=5342. ...

  2. 洛谷P1621 集合

    题目描述 Caima 给你了所有 [a,b][a,b] 范围内的整数.一开始每个整数都属于各自的集合.每次你需要选择两个属于不同集合的整数,如果这两个整数拥有大于等于 pp 的公共质因数,那么把它们所 ...

  3. LeetCode 700题 题解答案集合 Python

    2019.5.12更新至题号796,目前共有265题. 2019.5.26更新至题号72, 目前共有347题. 2019.6.16更新至题号70,目前共有382题. 2019.7.7更新至题号5120 ...

  4. JZOJ6893. 【2020.11.25提高组模拟】小 T 与灵石(stone)题解

    这道题需要转化,换根和卡常. 首先将集合中的点拉出来,找它们的直径 不需要什么虚树,随便挑一个集合里的点为根,做一遍dfs,找最远点x(要在集合里),以x为根重复以上操作,找到最远点y,x-y就是题解 ...

  5. LeetCode 309. Best Time to Buy and Sell Stock with Cooldown--Java解法-卖股票系列题目

    此文首发于我的Jekyll博客:zhang0peter的个人博客 LeetCode题解文章分类:LeetCode题解文章集合 LeetCode 所有题目总结:LeetCode 所有题目总结 题目地址: ...

  6. 从LeetCode 679. 24 Game--C++ 解法--二十四点 到穷举24点所有可能性-24点大全

    从LeetCode 679. 24 Game–C++ 解法–二十四点 到穷举24点所有可能性 此文首发于我的个人博客:zhang0peter的个人博客 LeetCode题解文章分类:LeetCode题 ...

  7. 数据结构线段树介绍与笔试算法题-LeetCode 307. Range Sum Query - Mutable--Java解法

    此文首发于我的个人博客:zhang0peter的个人博客 LeetCode题解文章分类:LeetCode题解文章集合 LeetCode 所有题目总结:LeetCode 所有题目总结 线段树(Segme ...

  8. LeetCode 31. Next Permutation-- Python 解法--数学题--比当前数大的最小的数

    LeetCode 31. Next Permutation-- Python 解法–数学题–比当前数大的最小的数 此文首发于我的个人博客:LeetCode 31. Next Permutation-- ...

  9. LeetCode 123. Best Time to Buy and Sell Stock III--Python解法--动态规划--数学题

    此文首发于我的个人博客:zhang0peter的个人博客 LeetCode题解文章分类:LeetCode题解文章集合 LeetCode 所有题目总结:LeetCode 所有题目总结 题目地址:Best ...

  10. Intervals on the Ring

    Intervals on the Ring 题意: 给出环上的一组区间,需要构造环上的一组区间使得这些区间的交是给定的区间的并 题解: 集合的摩尔定理告诉我们:∪Ai‾=∩Ai‾\overline{\ ...

最新文章

  1. Java的IDEA最常用快捷键汇总+快速写出Main函数
  2. Decode()函数使用技巧
  3. CI 扩展 Service
  4. 大数据(1) - 虚拟机集群搭建
  5. leetcode 238. Product of Array Except Self | 238. 除自身以外数组的乘积(Java)
  6. 快来看看你们的新年礼物,猜猜是什么?
  7. 字符串url获取参数_如何从URL查询字符串获取示例参数或将其附加到URL查询字符串(示例)?...
  8. (1-e^(-j5w))/(1-e^(-jw))=e^(-j2w)*sin(5w/2)/sin(w/2)的证明过程
  9. Python matplotlib绘制饼图
  10. 接口测试之json中的key获取
  11. MIPS 已死,转身投靠 RISC-V!
  12. [转]如何设置opengl结合vc开发绚丽的3D图形---操作详解
  13. DAS、NAS、SAN三种存储架构比较
  14. QQ在线等级算法实现
  15. Representation Learning with Contrastive Predictive Coding 论文阅读笔记
  16. 移动端 php 开源,poscms移动端地址函数
  17. 10分钟看完,一文教你Docker 从入门到精通(值得收藏的教程)
  18. webpack Uncaught ReferenceError: Swiper is not defined
  19. Oracle数据库迁移到人大金仓KingBase数据库
  20. 书呆子rico_Excel书呆子优胜者的夏季赠品

热门文章

  1. 什么是pid控制算法_智能车运动控制 ——PID简介
  2. JavaScript模式(1):字面量和构造函数
  3. 项目组织结构的3种类型:职能型、项目型和矩阵型
  4. 怎么把分开的pdf放在一起_PDF多页合并为一页的方法是什么 怎么将PDF文件拆分成单页...
  5. ts转换mp4 linux_佳佳MTS格式转换器下载 佳佳MTS格式转换器专业版下载
  6. 制定自己的工作目标时,应该学会SMART法则
  7. 图片格式转换jpg,图片批量转成jpg
  8. VMDK文件无法正常打开
  9. 常见分布的数学期望和方差
  10. LBP—局部二值模式