PAT(Basic Level) 完美数列(25)
来源:互联网 发布:sql语句主键约束 编辑:程序博客网 时间:2024/05/16 17:21
给定一个正整数数列,和正整数p,设这个数列中的最大值是M,最小值是m,如果M <= m * p,则称这个数列是完美数列。
现在给定参数p和一些正整数,请你从中选择尽可能多的数构成一个完美数列。
输入格式:
输入第一行给出两个正整数N和p,其中N(<= 105)是输入的正整数的个数,p(<= 109)是给定的参数。第二行给出N个正整数,每个数不超过109。
输出格式:
在一行中输出最多可以选择多少个数可以用它们组成一个完美数列。
输入样例:
108
23204516789
输出样例:
8
既然这题跟最大值最小值有关, 还有最长的完美数列长度. 所以排序是必不可少的了.
排序后从两端住中间缩, 就能求出最长完美数列.
#include<bits/stdc++.h> usingnamespacestd;constintINF=0x3f3f3f3f;intgrp[100100],p;intgetAns(intl,intr){ intleft=l,right=r; longlongtmp=grp[r]; longlongtp=p; //这里有个坑, 如果不用long long 第五个测试点会Wrong Answer, 也就是grp[l]*p 大于int if(tmp<=grp[l]*tp) returnr-l+1; else returnmax(getAns(l+1,r),getAns(l,r-1)); //当前长度如果不是完美数列, 就要缩下范围了, 当然了并不是直接缩到[l+1, r-1]因为还有可能是[l+1,r]或者[l,r-1].至于[l+1,r-1]可以通过[l+1,r]或者[l, r-1]转化而来.}intmain(){ intN,m,M,x,i; cin>>N>>p; for(i=0;i<N;i++)scanf("%d",&grp[i]); sort(grp,grp+N); cout<<getAns(0,N-1); return0;}
0 0
- PAT(Basic Level) 完美数列(25)
- PAT(basic level) 1030 完美数列(25)
- PAT BASIC LEVEL 1030. 完美数列(25)
- PAT (Basic Level) Practise (中文)1030. 完美数列(25)
- PAT (Basic Level) Practise (中文)1030. 完美数列(25)
- PAT (Basic Level) Practise (中文) 1030. 完美数列(25)
- PAT (Basic Level) Practise (中文)1030. 完美数列(25)
- Pat(Basic Level)Practice--1030(完美数列)
- PAT (Basic Level)1030. 完美数列
- PAT(Basic Level)_1030_完美数列
- PAT乙级(Basic Level)真题 >完美数列
- PAT Basic 1030. 完美数列(25)(C语言实现)
- PAT乙级(Basic Level)练习题 >NowCoder数列
- PAT乙级(Basic Level)练习题-NowCoder数列
- PAT乙级(Basic Level)练习题 NowCoder数列
- PAT (Basic Level)1049. 数列的片段和
- PAT(basic level) 1049数列的片段和(20)
- PAT BASIC LEVEL 1049. 数列的片段和(20)
- Linux内核学习总结
- 在oschina上添加SSH公钥
- 基于全注解方式实现MyBatis链接数据库的demo
- C 的布尔值
- day56-Spark SQL和DataFrame的本质
- PAT(Basic Level) 完美数列(25)
- LeetCode 4. Median of Two Sorted Arrays(两个有序数组的中位数)
- 欢迎使用CSDN-markdown编辑器
- gradle 学习系列教程2-gralde与maven比较
- PAT 1006. 换个格式输出整数 (15)
- Ubuntu16.04 Sublime Text3 安装激活和设置
- Genymotion 从注册到安装到运行到调试
- 读《Spring-技术内幕》-第二章:IoC容器的实现-1
- typecho博客页面显示数学公式