[蓝桥杯] 连号区间数

峰值内存消耗 < 64M  CPU消耗  < 5000ms

【题目描述 - Problem Description】

小明这些天一直在思考这样一个奇怪而有趣的问题:

在1~N的某个全排列中有多少个连号区间呢?这里所说的连号区间的定义是:

如果区间[L, R] 里的所有元素(即此排列的第L个到第R个元素)递增排序后能得到一个长度为R-L+1的“连续”数列,则称这个区间连号区间。

当N很小的时候,小明可以很快地算出答案,但是当N变大的时候,问题就不是那么简单了,现在小明需要你的帮助。

【输入 - Input】

【输出 - Output】

第一行是一个正整数N (1 <= N <= 50000), 表示全排列的规模。
第二行是N个不同的数字Pi(1 <= Pi <= N), 表示这N个数字的某一全排列。
输出一个整数,表示不同连号区间的数目。

【输入样例 1 - Sample Input 1】

【输出样例 1 - Sample Output 1】

4
3 2 4 1
7

【输入样例 2 - Sample Input 2】

【输出样例 2 - Sample Output 2】

5
3 4 2 5 1
9
提示 - Hint
第一个用例中,有7个连号区间分别是:[1,1], [1,2], [1,3], [1,4], [2,2], [3,3], [4,4]
第二个用例中,有9个连号区间分别是:[1,1], [1,2], [1,3], [1,4], [1,5], [2,2], [3,3], [4,4], [5,5]

【题解】

之前自己写了很暴力的判断,蓦然回首,在度娘上看到了更简洁的解法,顿时发觉自己之前代码写的额外判断并没有什么卵用。

一个区间是否连续,就看这个区间中(最大值 - 最小值 + 1)是否等于(区间长度)再之后的判断就没有必要了。

【代码 C++】

 1 #include <cstdio>
 2 #include <algorithm>
 3 using namespace std;
 4 int data[50005];
 5 int main(){
 6     int n, i, j, maxn, minn, opt;
 7     scanf("%d", &n);
 8     for (opt = i = 0; i < n; ++i) scanf("%d", &data[i]);
 9     for (i = 0; i < n; ++i, ++opt){
10         maxn = minn = data[i];
11         for (j = i + 1; j < n; ++j){
12             maxn = max(data[j], maxn);
13             minn = min(data[j], minn);
14             if (maxn - minn == j - i) ++opt;
15         }
16     }
17     printf("%d", opt);
18     return 0;
19 }

【可测评地址】https://acmore.cc/problem/LOCAL/1600

转载于:https://www.cnblogs.com/Simon-X/p/5302831.html

[蓝桥杯] 连号区间数相关推荐

  1. 蓝桥杯 - 连号区间数(暴力)

    小明这些天一直在思考这样一个奇怪而有趣的问题: 在1~N的某个全排列中有多少个连号区间呢?这里所说的连号区间的定义是: 如果区间[L, R] 里的所有元素(即此排列的第L个到第R个元素)递增排序后能得 ...

  2. [蓝桥杯]连号区间数[题目详解]

    题目描述 小明这些天一直在思考这样一个奇怪而有趣的问题: 在1~N的某个全排列中有多少个连号区间呢?这里所说的连号区间的定义是: 如果区间[L, R] 里的所有元素(即此排列的第L个到第R个元素)递增 ...

  3. 历届试题 连号区间数

    试题 历届试题 连号区间数 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 小明这些天一直在思考这样一个奇怪而有趣的问题: 在1~N的某个全排列中有多少个连号区间呢?这里所说的连号区 ...

  4. 连号区间数(2013年第四届c/c++ b组第10题)

    题目描述 标题:连号区间数 小明这些天一直在思考这样一个奇怪而有趣的问题: 在1~N的某个全排列中有多少个连号区间呢?这里所说的连号区间的定义是: 如果区间[L, R] 里的所有元素(即此排列的第L个 ...

  5. 蓝桥杯:P0604 Runaround数

    蓝桥杯:P0604 Runaround数 编写一个程序,输入一个2~7位的整数,然后判断它是否是一个runaround数.一个N位的runaround数具有以下的特点. (1) 该整数有N位,每一位数 ...

  6. 蓝桥杯——特殊回文数

    蓝桥杯--特殊回文数 问题描述 123321是一个非常特殊的数,它从左边读和从右边读是一样的. 输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n . 输入格式 输入一行, ...

  7. 蓝桥杯练习题 回文数

    蓝桥杯练习题 回文数 问题描述 1221是一个非常特殊的数,它从左边读和从右边读是一样的,编程求所有这样的四位十进制数. 输出格式 按从小到大的顺序输出满足条件的四位十进制数. #include< ...

  8. 蓝桥杯c语言试题幸运数,蓝桥杯  历届试题 幸运数  dfs

    时间限制:1.0s   内存限制:256.0MB 问题描述 幸运数是波兰数学家乌拉姆命名的.它采用与生成素数类似的"筛法"生成 . 首先从1开始写出自然数1,2,3,4,5,6,. ...

  9. [蓝桥杯][历届试题]连号区间数

    题目描述 小明这些天一直在思考这样一个奇怪而有趣的问题: 在1~N的某个全排列中有多少个连号区间呢?这里所说的连号区间的定义是: 如果区间[L, R] 里的所有元素(即此排列的第L个到第R个元素)递增 ...

最新文章

  1. python打乱list_超实用!每 30 秒学会一个 Python 小技巧,GitHub 标星 5300!
  2. java无效的源发行版_无效的Java
  3. win2008服务器系统功能,详解Win2008初始配置任务功能的应用
  4. Mysql学习总结(47)——MySQL大表优化方案
  5. 目录代码php_php获取某个目录大小的代码
  6. nmds与mds的区别_MDS与MSDS的区别
  7. 经纬度及其与坐标系的转换
  8. html单页模板wap,单页模板html
  9. 剪映+json解析将视频中的声音转换成文本
  10. 【Docker】9、Docker-Compose安装轻量级分布式日志服务Graylog
  11. Unity双人坦克大战竞速游戏,超简单教学
  12. 浅显易懂地看LLC变换器(一)
  13. 怎么在计算机网络广播中发话,如何用电脑发网络传真?手把手教大家具体操作步骤...
  14. 《Android开发常用素材网站》
  15. Android 动画和过渡
  16. 滚齿机 桥式起重机 分级机 异步鼠笼电机 压铸模 玩具电话 注塑模设计 提升机CAD 起重机 过滤器 自吸灌装机…设计
  17. 大数据离线批处理化解决方案--离线批处理
  18. 头歌平台Docker企业级实训 第2章 Docker进阶之镜像 镜像管理
  19. 关于Pycharm代码补全及高亮消失解决方案
  20. Typora+PicGo+又拍云实现图片快速上传的两种方法

热门文章

  1. 5 Handler与子线程
  2. SPOJ Python Day2: Prime Generator
  3. java 中类的加载顺序
  4. Linux下LCD 10分钟自动关屏的问题总结
  5. html语言table,HTML table 标签
  6. HD2500显卡驱动linux,Intel发布HD Graphics 2500/4000显卡Win10驱动下载
  7. 关于strlwr,strupr等函数在此作用域中尚未声明的问题
  8. c 语言程序设计(清华大学郑莉),C+语言程序设计(清华大学郑莉)十一ppt课件
  9. linux如何修改网卡序号,CentOS双网卡时改变网卡编号和配置静态路由的方法
  10. KubeDL 加入 CNCF Sandbox,加速 AI 产业云原生化