互斥的数(codevs1553)
有这样的一个集合,集合中的元素个数由给定的N决定,集合的元素为N个不同的正整数,一旦集合中的两个数x,y满足y = P*x,那么就认为x,y这两个数是互斥的,现在想知道给定的一个集合的最大子集满足两两之间不互斥。
输入有多组数据,每组第一行给定两个数N和P(1<=N<=10^5, 1<=P<=10^9)。接下来一行包含N个不同正整数ai(1<=ai<=10^9)。
输出一行表示最大的满足要求的子集的元素个数。
1 2 3 4
解析:
以样例为例,先把这一排数排个序:1 2 3 4 ,用一个 a[] 数组储存
从小到大:
1.如果 a[i]%P!=0 ,那 a[i] 一定在答案里,ans++,标记 a[i] 已存在
2.如果 a[i]%P==0 ,先算出除数 q=a[i]/P,再查询 q 是否已存在,q 一定在 a[i] 之前,如果 q 没出现过,则再不会有 a[i] = q*P,因此 ans++
- Case 1:先将 a[i] hash 一下, mp[ hash(a[i]) ].push_back(a[i])
- Case 2:Find( a[i]/p )
#include<stdio.h> #include<algorithm> #include<vector> using namespace std; const int mod=1e5+7; vector<int> mp[mod]; int n,p,ans; int a[100001];int hash(int x){return x%mod; }bool Find(int x) {for(int i=0;i<mp[hash(x)].size();++i){if(x == mp[hash(x)][i]) return 1;}return 0; }int main() {scanf("%d%d",&n,&p);for(int i=1;i<=n;++i){scanf("%d",&a[i]);}sort(a+1,a+1+n);for(int i=1;i<=n;++i){if(a[i]%p || !Find( a[i]/p ) ){ans++;mp[hash(a[i])].push_back(a[i]);}}printf("%d",ans);return 0; }
转载于:https://www.cnblogs.com/qseer/p/9418238.html
互斥的数(codevs1553)相关推荐
- 【codevs1553】互斥的数,二分查找是个好东西
互斥的数 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description 有这样的一个集合,集合中的元素个数由给定的N决定,集合的元素为N个不 ...
- 【codevs1553】互斥的数
problem solution codes /* 贪心 1.找出不互质的数的集合,就是把互斥的数删去. 2.那么当有两个互斥的数时,如果删掉前面(小)的,这个数后面的与它互斥的数也会入选,所以删掉后 ...
- c++ pipe 同步 互斥_数一数Linux中有多少种线程同步策略-『Linux 源码解析(二)』...
点这里排版好一点 本来这篇应该是上周发的,拖延症又犯了 上一篇主要讨论了Linux线程的调度算法 这篇来谈谈线程间的同步问题,暂时不包括IPC(InterProcess Communication)问 ...
- CODE【VS】1553 互斥的数(hash表+map函数)
题目描述 Description 有这样的一个集合,集合中的元素个数由给定的N决定,集合的元素为N个不同的正整数,一旦集合中的两个数x,y满足y = P*x,那么就认为x,y这两个数是互斥的,现在想知 ...
- codevs——1553 互斥的数
时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description 有这样的一个集合,集合中的元素个数由给定的N决定,集合的元素为N个不同的正整 ...
- 从零入门 FreeRTOS操作系统之信号量
从零入门 FreeRTOS操作系统之信号量 1 信号量的基本概念 信号量 (Semaphore) 是一种实现任务间通信的机制,可以实现任务之间同步或临界资源的互斥访问,常用于协助一组相互竞争的任务来访 ...
- HDU - 1796 How many integers can you find(容斥原理)
题目链接:点击查看 题目大意:给出一个n,再给出一个含有m个数的集合,问1~n-1中有多少个数可以被集合中的所有数字整除 题目分析:因为1~n-1中的每个数可能会被整除多次,所以我们可以利用容斥原理枚 ...
- POJ - 1091 跳蚤(容斥原理+数论)
题目链接:点击查看 题目大意:中文题意,不多赘述 题目分析:根据题目的意思,其实只需要让所有数的最大公约数为1就可以满足条件,好像是用到了欧几里得的一些知识,奈何我的数论比较菜,也不会证明,就直接用网 ...
- HDU - 4135 Co-prime(容斥原理)
题目链接:点击查看 题目大意:给出一个区间[l,r],再给出一个n,问区间中有多少个数与n互质 题目分析:容斥原理应用的经典题目,马克一篇非常不错的博客,留着以后慢慢消化: https://blog. ...
最新文章
- Linux 终端訪问 FTP 及 上传下载 文件
- 108.什么是信道?109.信道分类 110.什么是模拟信号?什么是数字信号?
- 1231 最优布线问题
- java怎么导入图片_iPad Pro插U盘不能导入图片?技术宅教你怎么做
- 用户自定义属性表结构设计_属性类型定制及其妙用
- 测试运维该学些什么?怎么入门,怎么进阶?
- 两者结合在一起看SphereFace
- HTTP MIME 类型
- Java笔记1(2015-8-30)
- SDK环境变量配置 adb配置
- 5G手机和4G手机的区别
- LA 5846 霓虹灯广告牌(单色三角形问题)
- 冯诺伊曼体系结构建模与模拟 之TOY模型机※
- 数学黑洞6174问题
- linux的system函数命令大全,Linux下system函数
- HDU2550 百步穿杨【打印图案】
- 2010 Esri中国区域用户大会9月14日开幕
- Autodesk Maya 2019 安装
- 【2022年】的网页转 App 教程
- android蓝牙投屏连接不上,乐播投屏常见使用问题汇总
热门文章
- 【图像隐藏】基于混合 DWT-HD-SVD 的数字图像水印方法技术附matlab代码
- 小牛电动车09Z和10Z的区别
- 深入理解7816协议(1)---- 关于F/D和etu
- 什么是语义分割?原理+实现过程?
- 华师计算机调剂深大,提前批院校补录12日12时前网上确认 华师 深大 广大仍有缺额...
- 新品发布 | 刚入门接触无人机?推荐一款S450给你
- “狙击波”病毒预防及处理办法
- OneNote+vscode+markdwon的综合方式记笔记
- 韩松手机摄影笔记第六课--手机滤镜VSCO
- linux 6 双网关 双路由器,rhel6.5双网卡双网关的配置