PAT 乙级 1045
题目
题目地址:PAT 乙级 1045
题解
本题的解法比较巧妙,刚开始的试着用暴力求解,果不其然时间超限……
变换思路,既然对于每个元素来说满足的条件是前小后大,那么对数组排序,对应的位置相等的即为题设要求的“可能主元”,但是还有一个条件要保证当前是从左向右遍历的最大值;总结一下两个条件:1. 排序后对应位置数字相等;2. 当前操作元素是从左向右遍历中的最大值
同时还要注意,当输入n值为0时,除了需要输出“可能主元”的个数之外,还需要保留换行符‘\n’
代码
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std; int main() {
vector<int> num;
vector<int> sortnum;
vector<int> result;
int n = ;
cin >> n;
while (n--) {
int tmp = ;
cin >> tmp;
num.push_back(tmp);
sortnum.push_back(tmp);
}
sort(sortnum.begin(), sortnum.end());
int maxx = ;
for (int i = ; i < num.size(); i++) {
if (num[i] > maxx)
maxx = num[i];
if (num[i] == sortnum[i] && num[i] >= maxx)
result.push_back(sortnum[i]);
}
cout << result.size() << endl;
for (int i = ; i < result.size(); i++) {
if (i != result.size() - )
cout << result[i] << ' ';
else
cout << result[i];
}
cout << endl; return ;
}
PAT 乙级 1045的更多相关文章
- PAT乙级1045 快速排序
1045 快速排序 (25分) 著名的快速排序算法里有一个经典的划分过程:我们通常采用某种方法取一个元素作为主元,通过交换,把比主元小的元素放到它的左边,比主元大的元素放到它的右边. 给定划分后的 ...
- pat乙级1045
从左到右扫描时记录扫描到当前下标为止的最大值,如果当前元素大于这个最大值,那么它就大于它左边的所有值.同理,从右到左扫描记录扫描到当前下标为止的最小值,如果当前元素小于这个最大小值,那么它就小于它右边 ...
- C#版 - PAT乙级(Basic Level)真题 之 1021.个位数统计 - 题解
版权声明: 本文为博主Bravo Yeung(知乎UserName同名)的原创文章,欲转载请先私信获博主允许,转载时请附上网址 http://blog.csdn.net/lzuacm. C#版 - P ...
- PAT乙级真题及训练题 1025. 反转链表 (25)
PAT乙级真题及训练题 1025. 反转链表 (25) 感觉几个世纪没打代码了,真是坏习惯,调了两小时把反转链表调出来了,心情舒畅. 这道题的步骤 数据输入,数组纪录下一结点及储存值 创建链表并储存上 ...
- PAT甲级1045. Favorite Color Stripe
PAT甲级1045. Favorite Color Stripe 题意: 伊娃正在试图让自己的颜色条纹从一个给定的.她希望通过剪掉那些不必要的部分,将其余的部分缝合在一起,形成她最喜欢的颜色条纹,以保 ...
- PAT 乙级 1024
题目 题目地址:PAT 乙级 1024 题解 模拟题,重点需要考虑到各种不同情况:简单来说一下: 因为输入格式固定,所以把不同的部分分别存储和处理可以在很大程度上简化运算:其中需要考虑最多的就是小数部 ...
- PAT 乙级 1017
题目 题目地址:PAT 乙级 1017 题解 粗看是一道大数除法题,实际上只不过是通过字符数组模拟除法过程,理解之后还是比较简单的: 具体分析一下本题: 因为题设中的除数(n)是一位整数,因此大幅简化 ...
- PAT 乙级 1015
题目 题目地址:PAT 乙级 1015 题解 常规题,难点在于理清楚排序规则,通过比较简洁的方式进行编码: 在这里我选择使用vector进行存储,并使用sort方法排序,因为本题不是简单按照大小排序, ...
- PAT 乙级 1003
题目 题目地址:PAT 乙级 1003 题解 规律观察题,本题的关键在于把题读懂,同时还有几个比较容易疏忽的地方需要注意:总之这道题要考虑的东西更多,细节上也要特别注意: 规律:“如果 aPbTc 是 ...
随机推荐
- Java流程控制和数组
流程控制 Java中三种基本的流程控制结构:顺序结构,分支结构和循环结构. 顺序结构,任何编程语言中都会有的程序结构. 分支结构:Java语言中常见的两种, if语句和switch语句. if语句,使 ...
- 解决 程序报 SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". 错误
调试程序出现如下错误: SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".SLF4J: Default ...
- Django模板语言,标签整理
Django模板语言 标签 内置标签引用 1. autoescape 控制自动转义是否可用. 这种标签带有任何 on 或 off 作为参数的话,他将决定转义块内效果. 该标签会以一个endautoes ...
- 基于角色权限管理:rbac设计分析以及具体细节
权限管理---设计分析以及具体细节 说起权限我们大家都知道,不一样的角色会有不一样的权限. 比如就像学生管理系统一样,管理员,老师,学生之间的权限都是不一样的,那么展示的页面也是不一样的. 所以,我们 ...
- P4874 回形遍历 —模拟
思路: 写完后信心满满,结果超时. 我很不解,下了个数据结果——,z竟然是大于1e10的,跟题目给的不一样啊 原来如此,正解是一行一行的走的... 注意当到两边一样近时,应优先向下和右!!!!!! 这 ...
- C#字符串变量使用
string由于是引用类型,所以,声明的字符串变量会存储到堆上,而且该变量是不可变的,一旦初始化了该变量,该内存区域中存储的内容将不能更改.在对字符串操作时,是在堆上创建了一个新的字符串变量,并将新的 ...
- I/O操做总结(四))
前面已经把java io的主要操作讲完了 这一节我们来说说关于java io的其他内容 Serializable序列化 实例1:对象的序列化 1 2 3 4 5 6 7 8 9 10 11 12 13 ...
- 只用jsp实现同样的Servlet功能
Jsp最终都会转化成java形式的Servlet执行,因此也可以说Jsp的本质就是Servlet,在jsp执行后,会在服务器上(例如tomcat中)生成.java以及.class文件.具体执行过程如下 ...
- Ubuntu 11.04源
##国内源#这个北京交通大学的源也挺不错的,我们首选这个,速度很不错deb http://mirror.bjtu.edu.cn/ubuntu/ narwhal multiversedeb http:/ ...
- httpHelper请求辅助类
#import <Foundation/Foundation.h> #import "AFNetworking.h" @interface AFHttpClient : ...