题目分析:

意思是要求对于一个给出的数组,我们在其中尽可能多选数字,使得所选数字的max <= min * p,而由于数据量较大直接二层循环不加优化实现是不现实的,由题意得知,对于数字序列的子序列选择没有连续性要求,就是可以随便选的意思,所以我们先将整个序列从小到大排序(这样在遍历时j-i+1就是你选择的个数),从第i == 1个元素开始往后搜索,只要能满足max <= min * p就继续搜索,直到不满足的退出,而在i+1个元素开始搜索时我们发现,由于下标为i+1的元素一定比i大(从小到大排序),所以之前i元素能达到的最远max,i+1元素是必然能达到的,所以i+1元素开始的位置就是i元素的最右极限+1(我用cnt记录i元素本次搜索能达到的最远的下标,i+1从cnt+1开始搜索)

本题代码:

 1 #include<iostream>
2 #include<stdio.h>
3 #include<algorithm>
4 using namespace std;
5
6 const int N = 100005;
7 int k[N];
8 int n, p, ans;
9
10 int main(){
11 scanf("%d%d", &n, &p);
12 for(int i = 1; i <= n; i++) scanf("%d", &k[i]);
13 sort(k+1, k+n+1);
14 ans = 0;
15 int cnt = 0;
16 for(int i = 1; i <= n; i++){
17 if(n - i + 1 > ans){
18 for(int j = cnt+1; j <= n; j++){
19 if(k[j] <= p * k[i]){
20 cnt++;
21 j-i+1 > ans ? ans = j-i+1 : ans;
22 }else break;
23 }
24 }else break;
25 }
26 printf("%d\n", ans);
27 return 0;
28 }

PAT甲级 Perfect Sequence (25) 记忆化搜索的更多相关文章

  1. 【HDU6327】Random Sequence(记忆化搜索)

    点此看题面 大致题意: 给你两个序列\(a,v\),其中\(a\)数组由\(0\sim m\)组成.随机用\(1\sim m\)中的一个数替换\(a\)中的\(0\),求\(\sum_{i=1}^{n ...

  2. 集训第五周动态规划 I题 记忆化搜索

    Description Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你.Michael想知道 ...

  3. 记忆化搜索(DP+DFS) URAL 1183 Brackets Sequence

    题目传送门 /* 记忆化搜索(DP+DFS):dp[i][j] 表示第i到第j个字符,最少要加多少个括号 dp[x][x] = 1 一定要加一个括号:dp[x][y] = 0, x > y; 当 ...

  4. UVA 11884 A Shooting Game(记忆化搜索)

    A and B are playing a shooting game on a battlefield consisting of square-shaped unit blocks. The bl ...

  5. hdu3555 Bomb (记忆化搜索 数位DP)

    http://acm.hdu.edu.cn/showproblem.php?pid=3555 Bomb Time Limit: 2000/1000 MS (Java/Others)    Memory ...

  6. DP(记忆化搜索) + AC自动机 LA 4126 Password Suspects

    题目传送门 题意:训练指南P250 分析:DFS记忆化搜索,范围或者说是图是已知的字串构成的自动机图,那么用 | (1 << i)表示包含第i个字串,如果长度为len,且st == (1 ...

  7. hdu 4856 Tunnels (记忆化搜索)

    Tunnels Time Limit: 3000/1500 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Su ...

  8. POJ 1088 滑雪(记忆化搜索)

    滑雪 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 92384   Accepted: 34948 Description ...

  9. FZU 2092 bfs+记忆化搜索

    晚上团队训练赛的题 和普通bfs不同的是 这是同时操纵人与影子两个单位进行的bfs 由于可能发生人和影子同时接触水晶 所以不可以分开操作 当时使用node记录人和影子的位置 然后进行两重for循环来分 ...

随机推荐

  1. 【题解】「P6771」[USACO05MAR]Space Elevator 太空电梯

    P6771 这是一道很明显的 dp 问题. 首先 dp 最重要的三要素是:动态表示.动态转移.初始状态. 只要这三个要素搞明白了,基本就能把这题做出来了. solution 让我们来看看这题的动态表示 ...

  2. 初中的一些OI琐屑 & APIO2020 & NOI2020

    这篇文章会发布在我的博客上 https://www.cnblogs.com/dmoransky/(一个小习惯,把信息学竞赛的学习历程记录在个人博客中). 借这篇随笔回顾并简短总结一下我的初中OI(信息 ...

  3. NOI Online #2 提高组 游记

    没 NOI Online 1 挂的惨就来写游记吧,不知道为啥 NOI Online 1 民间数据测得 60 分的 T1 最后爆零了... 昏昏沉沉的醒来,吃了早饭,等到 \(8:30\) 进入比赛网页 ...

  4. AcWing 339 .圆形数字

    大型补档计划 题目链接 设 \(f[i][j]\) 表示二进制下,数字有 \(i\) 位, \(0\) 的个数 - \(1\) 的个数 \(=\) \(j\) 的方案数 \(f[0][0] = 1;\ ...

  5. Angular:路由的配置、传参以及跳转

    ①路由的配置 1.首先用脚手架新建一个项目,在路由配置时选择yes 2.用ng g component创建组件 3.在src/app/app-routing.module.ts中配置路由 import ...

  6. 一个最简单的typescript工程

    初级: 1.新建一个文件夹~/a/ 2.cd ~/a/ 3.npm init -y          生成package.json 4.新建index.ts,内容:console.log(" ...

  7. 推荐系统实践 0x0f AutoRec

    从这一篇开始,我们开始学习深度学习推荐模型,与传统的机器学习相比,深度学习模型的表达能力更强,并且更能够挖掘出数据中潜藏的模式.另外.深度学习模型结构也非常灵活,能够根据业务场景和数据结构进行调整.还 ...

  8. Python命令行模块(sys.argv,argparse,click)

    Python作为一门脚本语言,经常作为脚本接受命令行传入参数,Python接受命令行参数大概有三种方式.因为在日常工作场景会经常使用到,这里对这几种方式进行总结. 命令行参数模块 这里命令行参数模块平 ...

  9. YouZack英语学习网站,英语四六级的福音

    YouZack英文网站 YouZack英语网站是,杨中科大佬开发给各位有需要的人使用的一个英语学习网站: 网站分两个模块: 听力模块部分图 听力模块界面 听力模块使用说明界面 背单词模块部分图 背单词 ...

  10. 歌曲网站,教你爬取 mp3 和 lyric

    从歌曲网站,获取音频和歌词的流程: 1, 输入歌曲名,查找网站中存在的歌曲 id 2, 拿歌曲 id 下载歌词 lyric 简单的 url 拼接 3, 拿歌曲 id 下载音频 mp3 先用一个 POS ...