PAT--完美数列-快速搜索
来源:互联网 发布:环保产业发展现状数据 编辑:程序博客网 时间:2024/05/16 00:35
给定一个正整数数列,和正整数p,设这个数列中的最大值是M,最小值是m,如果M <= m * p,则称这个数列是完美数列。
现在给定参数p和一些正整数,请你从中选择尽可能多的数构成一个完美数列。
输入格式:
输入第一行给出两个正整数N和p,其中N(<= 105)是输入的正整数的个数,p(<= 109)是给定的参数。第二行给出N个正整数,每个数不超过109。
输出格式:
在一行中输出最多可以选择多少个数可以用它们组成一个完美数列。
输入样例:
10 8
2 3 20 4 5 1 6 7 8 9
输出样例:8
#include<stdio.h>#define MAX 100005long long num[MAX];void quicksort(int left ,int right){//先用快速排序对所给的数进行排序,快排怎么写要记住 if(left>right) return; long long i,j,temp; i=left; j=right; temp=num[left]; while(i!=j){ while(num[j]>=temp&&i<j) j--; while(num[i]<=temp&&i<j) i++; if(i<j){ num[i]=num[i]^num[j]; num[j]=num[j]^num[i]; num[i]=num[i]^num[j]; } } num[left]=num[i]; num[i]=temp; quicksort(left,i-1); quicksort(i+1,right); return;}long long main(void){ long long n,p; scanf("%lld",&n); scanf("%lld",&p); long long i=0; while(i!=n){ scanf("%lld",&num[i++]); } quicksort(0,i-1); long long j,k,sum,record=0; for(j=0;j<=i-record;++j){//record记下每次找到的长度,那么最后的长度没有record那么长就不用去找了,浪费时间 sum=record; for(k=j+record;k<i;++k){//同理,既然已经有record,那么下一个就可以跳过record长度来查找 if(num[j]*p>=num[k]) sum++; else break;//这才是运行超时的关键,既然没找到比num[j]*p大的,那就必须break;否则完全全是在浪费时间 } if(record<sum) record=sum; } printf("%lld\n",record); return 0;}
0 0
- PAT--完美数列-快速搜索
- pat 1030. 完美数列
- PAT 1030完美数列
- PAT 1030完美数列
- PAT B1030. 完美数列
- 【PAT】1030. 完美数列(25)
- PAT乙级 完美数列(25)
- PAT 乙级 1030.完美数列
- PAT-B 1030. 完美数列
- PAT-B 1030. 完美数列
- [PAT-乙级]1030.完美数列
- 1030. 完美数列(25) PAT
- 完美数列(PAT-1030)
- PAT乙级1030 完美数列
- PAT 1030. 完美数列(25)
- PAT算法笔记(七)————完美数列(快速排序)
- PAT 1030 完美数列(25)
- Pat(Basic Level)Practice--1030(完美数列)
- URIEncoding与useBodyEncodingForURI 在tomcat中文乱码处理上的区别及CharacterEncodingFilter(备忘)
- shared library (.so) and static libarary (.a)
- Android消息推送(主: XMPP协议实现Android推送)
- javascript省市级联方式
- wampsever 修改基本操作
- PAT--完美数列-快速搜索
- Java多线程数量再次说明
- c++中换行\n和endl的区别
- android 编程无法解析或者他不是字段activitymain
- javascript中form表单的处理
- 使用装饰器实现一个简单的Tornado用户认证Demo(Basic authentication on Tornado with a decorator)
- javascript中常用的节点方法
- 贪吃蛇的实现及其简单AI设计
- Android项目旋转屏幕数据丢失的原因及解决