zoukankan      html  css  js  c++  java
  • PAT (Advanced Level) Practice 1085 Perfect Sequence (25分)

    1.题目

    Given a sequence of positive integers and another positive integer p. The sequence is said to be a perfect sequence if M≤m×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 (≤10​5​​) is the number of integers in the sequence, and p (≤10​9​​) is the parameter. In the second line there are N positive integers, each is no greater than 10​9​​.

    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
    

    2.题目分析

    PAT (Basic Level) Practice 1030 完美数列 (25分) (使用upper_bound进行二分查找!)

    3.代码

    
    #include<iostream>
    #include<algorithm>
    using namespace std;
    long long list[100001];
    int main()
    {
    	long long n, p;
    	cin >> n >> p;
    	for (int i = 0; i < n; i++)
    		cin >> list[i];
    	sort(list, list + n);
    	long long maxa = 0;
    	for (int i = 0; i < n; i++)
    	{
    		int index = upper_bound(list+i, list+n, list[i] * p)-list;
    		if (index == n)index--;
            while(list[index]>list[i]*p)index--;
    		maxa =(maxa> index - i+1)?maxa:(index-i+1);
    	}
    	cout << maxa;
    }
    
    
  • 相关阅读:
    pair
    非整除集合
    集合 set
    实现字通配符*
    vector
    矩阵及其初等变换
    求数组中连续子数组(最少有一个元素)的最大和。
    最长上升序列(Lis)
    st表求区间最大值
    [Noip2015] 信息传递
  • 原文地址:https://www.cnblogs.com/Jason66661010/p/12788831.html
Copyright © 2011-2022 走看看