A.单峰阵列

Array of integers is unimodal, if:

it is strictly increasing in the beginning;
after that it is constant;
after that it is strictly decreasing.
The first block (increasing) and the last block (decreasing) may be absent. It is allowed that both of this blocks are absent.

For example, the following three arrays are unimodal: [5, 7, 11, 11, 2, 1], [4, 4, 2], [7], but the following three are not unimodal: [5, 5, 6, 6, 1], [1, 2, 1, 2], [4, 5, 5, 6].

Write a program that checks if an array is unimodal.

Input
The first line contains integer n (1 ≤ n ≤ 100) — the number of elements in the array.

The second line contains n integers a1, a2, …, an (1 ≤ ai ≤ 1 000) — the elements of the array.

Output
Print “YES” if the given array is unimodal. Otherwise, print “NO”.

You can output each letter in any case (upper or lower).

Examples
Input
6
1 5 5 5 4 2
Output
YES
Input
5
10 20 30 20 10
Output
YES
Input
4
1 2 1 2
Output
NO
Input
7
3 3 3 3 3 3 3
Output
YES

翻译:

每次测试的时限1秒
每次测试的内存限制256兆字节
输入标准输入
输出量标准输出
整数数组是单峰,如果:

一开始严格增加;
在此之后,它是恒定的;
此后,这一数字正在严格减少。
可以不存在第一块(增加)和最后块(减少)。这两个区块都不存在,这是允许的。

例如,以下三个数组是单峰的:[5、7、11、11、2、1], [4,4,2], [7],但以下三个并非单峰:[5、5、6、6、1], [1,2,1,2], [4、5、5、6].

编写一个检查数组是否为单峰的程序。

输入
第一行包含整数。n (1≤n≤100)-数组中的元素数。

第二行包含n整数a1, a2…an (1≤ai≤1000)-数组的元素。

输出量
印刷“是“如果给定数组为单峰,则打印”否".

您可以在任何情况下输出每个字母(上或下)。

实例
输入
6
1 5 5 5 4 2
输出量
YES
输入
5
10 20 30 20 10
输出量
YES
输入
4
1 2 1 2
输出量
NO
输入
7
3 3 3 3 3 3 3
输出量
YES

在第一个例子中,数组是单峰的,因为它在开始时严格地增加(从位置开始)。1就位2,包括在内),它是常量(从位置)2就位4,包括在内),然后它将严格地减少(从位置)4就位6,包括在内)。

个人分析:

这个题看似很难,但是发现其中的奥妙就觉得有点水了,先分析一下,题目要求是对于一个序列一开始严格增加;
在此之后,它是恒定的;
此后,这一数字正在严格减少。
可以不存在第一块(增加)和最后块(减少)。这两个区块都不存在,这是允许的。

想象一下单峰就清楚了,那么我们的代码可以写成走一遍流程,如果走完了,那么这个就是单峰,没走完就输出NO

对代码的解释:
用了三个while循环来控制p的自增 相当于将你输入在a数组里的数据遍历,输出YES的条件就是(这里我把p当做指针来对待了) 相当于越界了数组 指出去了
详细一点就是比如 输入4个数 3 3 3 3 INF 这里我假设第5个数是一个最大值 它显然符合题目要求,是单峰哦 那么我们p指针最后指向了INF 满足else输出YES 如果指到最后一个3 就不是单峰哦 因为最后p要++
总的来说,就是最后p>n-1(数组从0开始)就符合单峰要求 输出YES 否则,都是NO(不可以嘤)

具体代码如下:

#include<iostream>
#include<set>
using namespace std;
#define maxn 108
int a[maxn];
int main()
{int n;while(cin>>n){for(int i=0;i<n;i++){cin>>a[i];}int p=1;while(a[p]>a[p-1]) p++;while(a[p]==a[p-1]) p++;while(a[p]<a[p-1]) p++;if(p<=n-1){cout<<"NO"<<endl;}else{cout<<"YES"<<endl;}}return 0;
}

CF831A-Unimodal Array(单峰阵列)相关推荐

  1. OpenGL Viewport Array视口阵列的实例

    OpenGL Viewport Array视口阵列 先上图,再解答. 完整主要的源代码 源代码剖析 先上图,再解答. 完整主要的源代码 #include "vapp.h" #inc ...

  2. matlab 双峰,如何在MATLAB中区分双峰和单峰阵列?

    我发现 PEAKDET的功能是相当可靠和快速的,虽然它是循环的.它不需要对噪声数据进行预平滑,而是发现差异大于参数delta的局部最大和最小极值. 由于PEAKDET从左到右运行,有时会错过正确的站点 ...

  3. LabVIEW处理阵列数据时如何避免占用多份内存空间

    LabVIEW处理阵列数据时如何避免占用多份内存空间 在程序中使用一个阵列数据类型,执行时希望这个阵列数据只在内存占有一份空间.可以使用移位寄存器以及"Replace Array Subse ...

  4. 家用计算机 阵列,家用PC组建RAID全攻略

    家用PC组建RAID全攻略 (2006-09-25 23:25:14) RAID(Redundant Arrays of Independent Disks),即廉价冗余磁盘阵列,1987年由加州大学 ...

  5. 转载 基于bayer型阵列的空间域插值

    基于bayer型阵列的空间域插值算法分 蒲杰 女,重庆邮电大学,在读硕士,研究方向为移动通信. 李振中 重庆邮电大学通信与信息工程学院. 屈刚 江苏省邮电规划设计院有限责任公司. 1 引言 在数码照相 ...

  6. 阵列卡,组成的磁盘组就像是一个硬盘,pci-e扩展出sata3.0

    你想提升性能,那么组RAID0,主板上的RAID应该是软RAID,肯定没有阵列卡来得稳定.如果你有闲钱,可以考虑用阵列卡. 不会的.即使不能起到RAID的作用,起码也可以当作直接连接了2个硬盘.不会影 ...

  7. 基于matlab的归一化阵列响应幅值极坐标图仿真,对比四阵元,八阵元以及十六阵元

    目录 1.算法仿真效果 2.MATLAB核心程序 3.算法涉及理论知识概要 4.完整MATLAB 1.算法仿真效果 matlab2022a仿真结果如下: 2.MATLAB核心程序 .......... ...

  8. Codeforces Round #424 (Div. 2)

    D题fst了,生无可恋.第二场rated的CF,打得精神恍惚 A. Unimodal Array 题意:判断数列是否是单峰的. 像题意那样分为三个阶段随便判一判就好了 #include<iost ...

  9. Reading7. Statistical Concepts and Market Returns

    Statistical Concepts and Market Returns[ 7.1 统计学的基本概念 7.1.1 描述性统计学与推断性统计学(Descriptive Statistics vs. ...

最新文章

  1. 在selenium中使用css选择器进行元素定位(一)
  2. Servlet,GenericServlet和HttpServlet的继承关系
  3. 机器学习的一些注意事项
  4. 入门机器学习(五)--正则化
  5. javaEE常用开源框架的认识及概述,带你深入探索Java开发世界
  6. 如何利用魔棒工具抠图_10秒教你如何用PS魔棒工具抠图
  7. 【Unity】由Unity资源的相对路径获取资源的AssetDatabase路径
  8. Table is marked as crashed and should be repaire (
  9. 转行做软件测试的原因
  10. Coroutine协成
  11. 算法问题——(树问题集合)
  12. SpringCloud——网关2
  13. 屏蔽csdn百度推广广告
  14. 阿里云思维导图系列(五)阿里云关系型数据库产品全家福
  15. 华为手机8.0.0怎么找到云相册_华为云相册下载-华为云相册预约 安卓版v1.0-PC6安卓网...
  16. Vue3的vue-router超详细使用
  17. 对ActiveX控件进行注册
  18. USB-C版3.7V锂电池充电与升压输出电路(5V/1A输出)-充电电源板(附电路图和PCB 抄板直接可用)
  19. 如何提高睡眠效率和质量?
  20. chromium 14 chromium命令行

热门文章

  1. 利用 Python + Selenium 自动化快速截图
  2. 甘超波:NLP检定语言模式
  3. 高效的学习方法(费曼学习方法)
  4. 单基因gsea_10个细胞系仅1个表达你的基因
  5. Java8用jmap输出jvm参数
  6. 为什么手机信号满格,但网速却还是那么慢?这4点原因是关键
  7. 欲望无限--《贝奥武夫》给我们的启示
  8. linux 电源管理源码分析,Linux 3.8.1 电源管理之OMAP Voltage Domain分析
  9. 初中数学分几个模块_初中数学分成三大模块
  10. 腾讯云API接口鉴权v3 鉴权失败问题 AuthFailure.SignatureFailure