pat 1085 Perfect Sequence (25) 二分查找
2017-12-09 11:46
477 查看
题意
给我们一个数串 让我们从中挑选数字 构成一个集合使得集合中最小元素m和最大元素M 满足 m*p>=M
求出集合的最大数量
分析
看下条件就可以发现 m*p >=M也就是在数串中找m*p>=x
x的上界
那么排下序二分找即可
code
#include<bits/stdc++.h> using namespace std; typedef long long ll; int a[100010]; int main() { ll n,p; scanf("%lld%lld",&n,&p); for(int i=1;i<=n;i++) scanf("%d",&a[i]); sort(a+1,a+1+n); int ans=0; for(int i=1;i<=n;i++){ ll lim = a[i]*p; int l=1,r = n,mid; while(l<=r){ mid = l+r>>1; if(lim>=a[mid])l = mid+1; else r = mid-1; } l = min(l,(int)n+1); ans = max(ans,l-i); } printf("%d\n",ans); return 0; }
相关文章推荐
- PAT 1085. Perfect Sequence (25)(二分查找)
- 1085. Perfect Sequence (25)【二分查找】——PAT (Advanced Level) Practise
- 1044. Shopping in Mars (25)-PAT甲级真题(二分查找)
- PAT--1085 Perfect Sequence(二分查找)
- 1085. PAT单位排行 (25)
- PAT1010(二分查找求二进制)
- PAT典型题目(9)二分查找
- PAT:二分查找
- 1085. PAT单位排行 (25)
- PAT甲题题解-1010. Radix (25)-二分搜索
- PAT (Advanced Level) 1029. Median (25) 求两个有序数组的中位数,二分
- 03-1. 二分法求多项式单根(PAT) - 二分查找问题
- 1085. PAT单位排行 (25)
- PAT (Advanced Level) Practise 1085-Perfect Sequence (25)
- 1085. PAT单位排行 (25)
- 1085. PAT单位排行 (25) PAT乙级真题
- PAT (Advanced Level)1010. Radix (25) 二分搜索
- pat-1057 Stack 树状数组+二分查找
- PAT (Advanced Level) Practise 1085 Perfect Sequence (25)
- 1085. PAT单位排行 (25)+2018_3_24