PAT甲级——A1085 Perfect Sequence

Given a sequence of positive integers and another positive integer p. The sequence is said to be a perfect sequence if Mm×p where M and m are the maximum and minimum numbers in the sequence, respectively.

Now given a sequence and a parameter p, you are supposed to find from the sequence as many numbers as possible to form a perfect subsequence.

Input Specification:

Each input file contains one test case. For each case, the first line contains two positive integers N and p, where N (≤) is the number of integers in the sequence, and p (≤) is the parameter. In the second line there are N positive integers, each is no greater than 1.

Output Specification:

For each test case, print in one line the maximum number of integers that can be chosen to form a perfect subsequence.

Sample Input:

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

Sample Output:

8

又是没看清题,这道题的子序列不需要是原来的连续子序列,只要求是原来里面的值就行,搞得又浪费了很多时间!!!!

 1 //靠,不需要是子排序,就是找数字就行
 2 #include <iostream>
 3 #include <deque>
 4 #include <vector>
 5 #include <algorithm>
 6 using namespace std;
 7 int N;
 8 long long P;
 9 int main()
10 {
11     cin >> N >> P;
12     vector<int>num(N);
13     for (int i = 0; i < N; ++i)
14         cin >> num[i];
15     sort(num.begin(), num.end());
16     int res = 0;
17     for(int L=0,R=0;L<=R && R<N;++R)
18     {
19         while (L <= R && num[R] > P * num[L])
20             L++;
21         res = res > R - L + 1 ? res : R - L + 1;        
22     }
23     cout << res << endl;
24     return 0;
25 }

 

posted @ 2019-08-11 23:28  自由之翼Az  阅读(325)  评论(0编辑  收藏  举报