题意 :

  • 给一序列,将其分为若干段,要求每一小段内排序后整体非递减,求最多能分为多少段

思路 :

  • 对一段内部,必然有最大值和最小值,要让分的段数最多,只要让下一段的最小值大于这段的最大值,就可以多分一段
  • 所以直接找每个数能接受的最大值和最小值
  • 即找这个数往前的最大值,下个数往后的最小值(找时注意设立两个哨兵)
#include <iostream>
#include <algorithm>
#include <cstring>
#include <queue>
#define debug(a) cout << #a << " = " << a << endl;
#define x first
#define y second
using namespace std;
typedef long long ll;const int N = 1e6 + 10;int n;
int a[N];
int maxx[N], minn[N];int main()
{ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);int _ = 1;
//    cin >> _;while (_ -- ){cin >> n;for (int i = 1; i <= n; i ++ ) cin >> a[i];maxx[0] = 0;minn[n + 1] = 1e9 + 7;for (int i = 1; i <= n; i ++ )maxx[i] = max(maxx[i - 1], a[i]);for (int i = n; i >= 1; i -- )minn[i] = min(minn[i + 1], a[i]);int ans = 0;for (int i = 1; i <= n; i ++ )if (maxx[i] <= minn[i + 1])ans ++ ;cout << ans << endl;}return 0;
}
  • 附上另一种方案,只记录后缀的,且不增加哨兵
#include <iostream>
#include <algorithm>
#include <cstring>
#include <queue>
#define debug(a) cout << #a << " = " << a << endl;
#define x first
#define y second
using namespace std;
typedef long long ll;const int N = 1e6 + 10;int n;
int a[N];
int maxx[N], minn[N];int main()
{ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);int _ = 1;
//    cin >> _;while (_ -- ){cin >> n;for (int i = 1; i <= n; i ++ ) cin >> a[i];int mi = a[n];for (int i = n; i >= 1; i -- ){mi = min(mi, a[i]);minn[i] = mi;}int mx = 0, ans = 0;for (int i = 1; i <= n; i ++ ){if (mx <= minn[i]) ans ++ ;mx = max(mx, a[i]);}cout << ans << endl;}return 0;
}

Kobolds and Catacombs 思维,模拟,前缀,后缀(沈阳)相关推荐

  1. 【POJ - 2752】Seek the Name, Seek the Fame (KMP,公共前缀后缀长度及个数)

    题干: The little cat is so famous, that many couples tramp over hill and dale to Byteland, and asked t ...

  2. java中获得词根的方法_分析在各大考纲词汇中同时拥有前缀后缀和词根的词(一)...

    CET4.CET6.GRE.IELTS.TOEFL.考研英语总的词汇量为14055,有11544个单词含有词根信息,有5526个单词含有前缀信息,有9525个单词含有后缀信息.那么有多少个单词同时拥有 ...

  3. Rvit中添加尺寸标注的前缀后缀和【一键尺寸定位标注】

    一.Rvit中如何添加尺寸标注的前缀后缀 在进行尺寸标注尤其是多段连续的尺寸标注时常会用到诸如:3x2000=6000的标注样式,在Revt中应如何实现? 我们可以采用以下方法来解决: 1.如图1所示 ...

  4. 字符串最长公共前缀后缀长度

    首先,要了解两个概念:"前缀"和"后缀". "前缀"指除了最后一个字符以外,一个字符串的全部头部组合:"后缀"指除了第一 ...

  5. 我的世界服务器世界前缀修改,大佬教你如何给玩家添加名字前缀后缀

    下面小编为大家带来我的世界添加名字前缀后缀攻略,相信好多玩家都非常的想知道,那么想知道的玩家一定要看下面的内容! 作者:Msure 很多玩家见过有些地图中有玩家名字可以获得前缀,如图: 那么下面给出详 ...

  6. 【MySQL】利用Concat()函数在某一列字段批量添加前缀后缀

    一.MySQL中的Concat()函数 1. 含义: 将多个字符串连接成一个字符串. 2. 语法: concat(str1, str2,-) 返回结果为连接参数产生的字符串,如果有任何一个参数为nul ...

  7. jQuery EasyUI/TopJUI基本的数字输入框(保留两位小数,带前缀后缀...)

    jQuery EasyUI/TopJUI基本的数字输入框(保留两位小数,带前缀后缀...) numberbox(数值输入框) HTML required:必填字段,默认为false:prompt:显示 ...

  8. 批量处理文件名前缀后缀

    准备工作 使用python编程语言. 使用subtextline编写并运行python. 需求 文件名有相同命名的前缀后缀或中间字符,需要去除相应的字符. 我是从公司内网导出数据,经去水印处理,每个文 ...

  9. 2020 ICPC亚洲区域赛(沈阳)F-Kobolds and Catacombs(思维+模拟)

    F-Kobolds and Catacombs 考虑每一段,先找到最小的,然后把编号小于它的都化为一组,此时有一个最大值需要把小于最大值的在划分进来,然后又有编号小于它的,于是再把编号小于它的划分为一 ...

最新文章

  1. 综述丨七场高端报告,带你大视角看人工智能发展
  2. 【搜索引擎基础知识2】网络爬虫的介绍
  3. java iterator获取索引_2020年Java面试题最新整理(1625)
  4. C语言字符串输出函数puts()的作用是什么
  5. 什么是堆栈的构造方法?向上生长堆栈,向下生长堆栈
  6. IntelliJ IDEA安装后需要必须做的一件事
  7. Linux中的压缩命令
  8. spark 类别特征_spark 机器学习基础 数据类型
  9. sun的java认证考试_Sun Java认证考试科目
  10. 一个对话让你明白架构师是做什么的?
  11. fastcgi php 进程用户 lighttpd,说说lighttpd的fastcgi
  12. oracle 数据泵导出时间,Oracle DMP备份文件使用数据泵expdp/impdp导出导入dmp文件
  13. 最喜欢的一款星光和光晕ps笔刷
  14. 狗都能看懂的CenterNet讲解及代码复现
  15. Chrome浏览器截取网页生成图片
  16. 2018四川省排名前十的卫校名单有哪些?
  17. 安徽科技学院2017-2018-1学期15电信12班《Java编程技术》课下作业~解题报告
  18. MySQL-限制结果-LIMIT(limit)
  19. 64位驱动 hp630打印机_HP Deskjet 1280打印机x64驱动下载|HP1280打印机windows7 x64位驱动 - 驱动无忧...
  20. IDEA中文件或文件夹 如何重命名?解决方法如下

热门文章

  1. 在ABAP/4中声明表格控制
  2. 42、Power Query-Text.Remove函数应用
  3. 估价分类不允许分离估价
  4. SM35/BDC Record / Log 导出
  5. 物流行业SAP整体解决方案
  6. 双11行业“三连冠”,鞋王百丽走对了哪几步?
  7. 信息服务器怎么填写,如何设定服务器信息
  8. python integer_【Python】string/list/integer常用函数总结
  9. cent 8.0 安装tomcat 9.0_Linux服务器:安装tomcat并部署war应用
  10. gmr 通信 matlab,matlab使用TCP/IP Server Sockets