zoukankan      html  css  js  c++  java
  • A1085 Perfect Sequence [二分、two pointers]

    在这里插入图片描述
    题目大题:找出最长子序列,且最大的数不能超过最小的数p倍
    思路:
    1.因为是求二分查找的最后一个值,所以等价于排序后二分查找不满足条件的第一个位置
    2. 注意点:注意每次查找可能有没有不满足条件的数字出现,所以要提前判断一下

    #include<iostream>
    #include<cstring>
    #include<algorithm>
    #include<string>
    using namespace std;
    long long int a[100001];
    int main()
    {
    	int n; long long int p;
    	cin >> n >> p;
    	for (int i = 0; i < n; i++)
    	{
    		cin >> a[i];
    	}
    	sort(a, a + n); int inf = -1;
    	for (int i = 0; i < n; i++)
    	{
    		if (a[n - 1] <= (a[i] * p))
    		{
    			if ((n - i) > inf)
    				inf = n - i;
    		}
    		else
    		{
    			long long int temp = a[i];
    			int left = i+1, right = n - 1;
    			while (left < right)
    			{
    				int mid = (left + right) / 2;
    				if (a[i] * p < a[mid])
    					right = mid;
    				else
    					left = mid + 1;
    			}
    			if ((right - i) > inf)
    				inf = right - i;
    		}
    	}
    	cout << inf << endl;
    }
    
    #include<iostream>
    #include<cstring>
    #include<algorithm>
    #include<string>
    #include<time.h>
    using namespace std;
    int main()
    {
    	int n, m; int a[100001];
    	cin >> n >> m;
    	for (int i = 0; i < n; i++)
    	{
    		cin >> a[i];
    	}
    	sort(a, a + n);
    	int i = 0, j = 0, count = 1;
    	while (i < n && j < n)
    	{
    		while (j < n && a[j] <= (long long)a[i] * m)
    		{
    			count = max(count, j - i + 1);
    			j++;
    		}
    		i++;
    	}
    	cout << count << endl;
    	return 0;
    }
    
  • 相关阅读:
    freemarker 遍历 hashmap 到select option
    三分钟跑起jsblocks
    hibernate_@GeneratedValue
    跑github上的Symfony项目遇到的问题2
    Activiti使用过程_1
    Symfony官方视频教程
    跑github上的Symfony项目遇到的问题
    剧本杀
    随遇而安
    开发者职场心得
  • 原文地址:https://www.cnblogs.com/Hsiung123/p/13812063.html
Copyright © 2011-2022 走看看