2017浙江工业大学-校赛决赛 小马哥和数列

Posted 樱花落舞

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2017浙江工业大学-校赛决赛 小马哥和数列相关的知识,希望对你有一定的参考价值。

Description

小马哥是个追求完美的人,现在给定一个正整数数列,和正整数p,设这个数列中的最大值是M,最小值是m,如果M <= m * p,则称这个数列是完美的,现在给定参数p和一些正整数,请你从中选择尽可能多的数构成一个完美数列。

Input

多组数据。输入第一行给出两个正整数N和p,其中N(<= 10^5)是输入的正整数的个数,p(<= 10^9)是给定的参数。第二行给出N个正整数,每个数不超过10^9。

Output

在一行中输出最多可以选择多少个数可以用它们组成一个完美数列。

Sample Input

10 3
1 2 4 3 10 9 8 7 6 5

Sample Output

7
解法:二分查一查就好啦
 1 #include <iostream>
 2 #include <stdio.h>
 3 #include <vector>
 4 #include <queue>
 5 #include <math.h>
 6 #include <algorithm>
 7 #define N 100005
 8 #define LL long long
 9 using namespace std;
10 struct Node{
11     double x,y;
12     double ans;
13 }node[N],Nod[N];
14 double Dis(Node x,double a,double b){
15     return sqrt((x.x-a)*(x.x-a)+(x.y-b)*(x.y-b));
16 }
17 bool Sort(Node a,Node b){
18     if(a.ans==b.ans){
19         return a.x<b.x;
20     }
21     return a.ans<b.ans;
22 }
23 LL a[123456];
24 int main(){
25     LL n,k;
26     while(cin>>n>>k){
27        for(int i=1;i<=n;i++){
28             cin>>a[i];
29        }
30        sort(a+1,a+1+n);
31        LL Max=-1;
32        for(int i=1;i<=n;i++){
33             LL pos=a[i]*k;
34             int ans=upper_bound(a+1,a+1+n,pos)-a-1;
35             Max=max((LL)ans-i+1,Max);
36        }
37        printf("%d\n",Max);
38     }
39     return 0;
40 }

 

以上是关于2017浙江工业大学-校赛决赛 小马哥和数列的主要内容,如果未能解决你的问题,请参考以下文章

2017浙江工业大学-校赛决赛 猜猜谁是我

2017浙江工业大学-校赛决赛 竹之书

2017浙江工业大学-校赛决赛 BugZhu抽抽抽!!

2017浙江工业大学-校赛决赛 小M和天平

2017浙江工业大学-校赛决赛 XiaoWei的战斗力

2017广东工业大学程序设计竞赛决赛-tmk买礼物