1030 完美数列 (25分)
给定一个正整数数列,和正整数 p,设这个数列中的最大值是 M,最小值是 m,如果 M≤mp,则称这个数列是完美数列。

现在给定参数 p 和一些正整数,请你从中选择尽可能多的数构成一个完美数列。

输入格式:
输入第一行给出两个正整数 N 和 p,其中 N(≤10
​5
​​ )是输入的正整数的个数,p(≤10
​9
​​ )是给定的参数。第二行给出 N 个正整数,每个数不超过 10
​9
​​ 。

输出格式:
在一行中输出最多可以选择多少个数可以用它们组成一个完美数列。

输入样例:
10 8
2 3 20 4 5 1 6 7 8 9

输出样例:
8


  • 第一遍5mins看完题,想速度快些,所以两边向中间靠近,一步得到最长序列
  • 但是总有部分答案过不了,写了15mins
//WA
#include<iostream>
#include<algorithm>
using namespace std;
const int maxn = 1e5+10;
int a[maxn];
int main(){int n;  cin>>n;//double p;  cin>>p;int p; cin>>p;for(int i = 1; i <= n; i++)cin>>a[i];sort(a+1,a+n+1);int l = 1, r = n;while(l < r){/*double x = a[r]/a[l+1], y = a[r-1]/a[l];if(x<p){l++;break;}if(y<p){r--;break;}if(x<y)l++;else r--;*/if(a[r]<p*a[l+1]){l++;break;}if(a[r-1]<p*a[l]){r--;break;}if(a[r]*a[l]<a[r-1]*a[l+1])l++;else r--;}if(l!=r)cout<<r-l+1;else cout<<'0';return 0;
}
  • 然后看了标程,模拟就能水,又花10mins写了个模拟
  • 结果不剪枝会TLE,没有longlong会WA。。又调了10mins
//AC
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
typedef long long LL;
int main(){LL n, p; cin>>n>>p;vector<int>a(n);for(int i = 0;i < n; i++)cin>>a[i];sort(a.begin(),a.end());LL ans = 0;for(int i = 0; i < n; i++){for(int j = i+ans; j < n; j++){//+ans剪枝if(a[j]<=a[i]*p)//不用longlong会溢出ans = max(ans, (LL)j-i+1);else break;}}cout<<ans;return 0;
}

  • 一道题本来打算10mins,结果写了40多mins,而且还看了标程
  • 调试一道题要想清楚再写,不然回来写成本太高了。
  • 很多基础题其实模拟就好,不要想太多

  • 数据规模,1000ms是10 ^ 7(n ^ 2的复杂度是 5000),所以200ms用n ^ 2的复杂度n要小于1000,
  • 数据类型需要仔细

【PAT乙】1030 完美数列 (25分) 枚举相关推荐

  1. PAT乙级1030 完美数列 (25 分)

    1030 完美数列 (25 分) 给定一个正整数数列,和正整数 p,设这个数列中的最大值是 M,最小值是 m,如果 M≤mp,则称这个数列是完美数列. 现在给定参数 p 和一些正整数,请你从中选择尽可 ...

  2. C++学习之路 | PTA乙级—— 1030 完美数列 (25 分)(精简)

    1030 完美数列 (25 分) 给定一个正整数数列,和正整数 p,设这个数列中的最大值是 M,最小值是 m,如果 M≤mp,则称这个数列是完美数列. 现在给定参数 p 和一些正整数,请你从中选择尽可 ...

  3. 【PAT (Basic Level) 】1030 完美数列 (25 分)

    给定一个正整数数列,和正整数 p,设这个数列中的最大值是 M,最小值是 m,如果 M≤mp,则称这个数列是完美数列. 现在给定参数 p 和一些正整数,请你从中选择尽可能多的数构成一个完美数列. [输入 ...

  4. 【最优解法】1030 完美数列 (25分)_23行代码AC

    立志用最少的代码做最高效的表达 PAT乙级最优题解-->传送门 给定一个正整数数列,和正整数 p,设这个数列中的最大值是 M,最小值是 m,如果 M≤mp,则称这个数列是完美数列. 现在给定参数 ...

  5. 1030 完美数列 (25 分)(c语言)

    给定一个正整数数列,和正整数 p,设这个数列中的最大值是 M,最小值是 m,如果 M≤mp,则称这个数列是完美数列. 现在给定参数 p 和一些正整数,请你从中选择尽可能多的数构成一个完美数列. 输入格 ...

  6. 【PAT乙级】1030 完美数列 (25 分)

    题目地址 #include<cstdio> #include<iostream> #include<algorithm> using namespace std; ...

  7. 1030. 完美数列(25)

    1030. 完美数列(25) 时间限制 300 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CAO, Peng 给定一个正整数数列,和正整数p,设这 ...

  8. 【PAT】1030 完美数列 (25 分)

    1030 完美数列 (25 分) 给定一个正整数数列,和正整数 p,设这个数列中的最大值是 M,最小值是 m,如果 M≤mp,则称这个数列是完美数列. 现在给定参数 p 和一些正整数,请你从中选择尽可 ...

  9. 1030. 完美数列(25)-PAT乙级真题

    给定一个正整数数列,和正整数p,设这个数列中的最大值是M,最小值是m,如果M <= m * p,则称这个数列是完美数列. 现在给定参数p和一些正整数,请你从中选择尽可能多的数构成一个完美数列. ...

最新文章

  1. 解救被困传销女演员 助人减肥找老婆 蚂蚁森林又现神功能
  2. linux下查看文件命令小结
  3. Java文件流之练习
  4. mysql更新字符串中某个字符串_mysql更新某个字符串字段的部分内容
  5. [react] react怎么提高列表渲染的性能?
  6. BlueCatTools-域名批量查询软件介绍
  7. 十一、 C++特性之begin()与end()
  8. python的内置函数是什么_python_内置函数
  9. [转载] 朴素贝叶斯python实现预测_Python实现朴素贝叶斯分类器的方法详解
  10. msfvenom制作360,腾讯免杀木马
  11. Kaggle-泰坦尼克号-机器学习/数据挖掘学习笔记
  12. 定制婚礼APP开发功能
  13. 【Python自然语言处理】读书笔记:第五章:分类和标注词汇
  14. c语言已知加速度求位移速度,知道初速度知道加速度求位移的公式
  15. MATLAB的交互式界面 简易设计
  16. python正则表达式是什么意思_理解python正则表达式
  17. 电脑出现 initialization failure 问题
  18. 杭州中高级职称评审流程
  19. P15~P19 分支和循环
  20. 阿德莱德大学语言班成绩为C,2020年阿德莱德大学语言班学习经历分享

热门文章

  1. xshell/putty 连接 linux 虚拟机 connection failed 的解决方案
  2. 经典书单 —— 计算机图形学
  3. 圆上的定理 —— 圆周角定理与相交弦定理
  4. 单位与单位的换算(二)
  5. 面向对象 —— 类设计(八)
  6. 【笔试/面试】—— 从大数相减到大数求除(大数求余)
  7. python学了真的很有用吗-学习Python真的有必要参加培训吗?老男孩Python学习机构...
  8. python自学教程-3D图示Python标准自学教程入门篇
  9. python是什么 自学-你们都是怎么自学python的?
  10. 下载python教程-python教程pdf下载