Kobolds and Catacombs 思维,模拟,前缀,后缀(沈阳)
题意 :
- 给一序列,将其分为若干段,要求每一小段内排序后整体非递减,求最多能分为多少段
思路 :
- 对一段内部,必然有最大值和最小值,要让分的段数最多,只要让下一段的最小值大于这段的最大值,就可以多分一段
- 所以直接找每个数能接受的最大值和最小值
- 即找这个数往前的最大值,下个数往后的最小值(找时注意设立两个哨兵)
#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 思维,模拟,前缀,后缀(沈阳)相关推荐
- 【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 ...
- java中获得词根的方法_分析在各大考纲词汇中同时拥有前缀后缀和词根的词(一)...
CET4.CET6.GRE.IELTS.TOEFL.考研英语总的词汇量为14055,有11544个单词含有词根信息,有5526个单词含有前缀信息,有9525个单词含有后缀信息.那么有多少个单词同时拥有 ...
- Rvit中添加尺寸标注的前缀后缀和【一键尺寸定位标注】
一.Rvit中如何添加尺寸标注的前缀后缀 在进行尺寸标注尤其是多段连续的尺寸标注时常会用到诸如:3x2000=6000的标注样式,在Revt中应如何实现? 我们可以采用以下方法来解决: 1.如图1所示 ...
- 字符串最长公共前缀后缀长度
首先,要了解两个概念:"前缀"和"后缀". "前缀"指除了最后一个字符以外,一个字符串的全部头部组合:"后缀"指除了第一 ...
- 我的世界服务器世界前缀修改,大佬教你如何给玩家添加名字前缀后缀
下面小编为大家带来我的世界添加名字前缀后缀攻略,相信好多玩家都非常的想知道,那么想知道的玩家一定要看下面的内容! 作者:Msure 很多玩家见过有些地图中有玩家名字可以获得前缀,如图: 那么下面给出详 ...
- 【MySQL】利用Concat()函数在某一列字段批量添加前缀后缀
一.MySQL中的Concat()函数 1. 含义: 将多个字符串连接成一个字符串. 2. 语法: concat(str1, str2,-) 返回结果为连接参数产生的字符串,如果有任何一个参数为nul ...
- jQuery EasyUI/TopJUI基本的数字输入框(保留两位小数,带前缀后缀...)
jQuery EasyUI/TopJUI基本的数字输入框(保留两位小数,带前缀后缀...) numberbox(数值输入框) HTML required:必填字段,默认为false:prompt:显示 ...
- 批量处理文件名前缀后缀
准备工作 使用python编程语言. 使用subtextline编写并运行python. 需求 文件名有相同命名的前缀后缀或中间字符,需要去除相应的字符. 我是从公司内网导出数据,经去水印处理,每个文 ...
- 2020 ICPC亚洲区域赛(沈阳)F-Kobolds and Catacombs(思维+模拟)
F-Kobolds and Catacombs 考虑每一段,先找到最小的,然后把编号小于它的都化为一组,此时有一个最大值需要把小于最大值的在划分进来,然后又有编号小于它的,于是再把编号小于它的划分为一 ...
最新文章
- 综述丨七场高端报告,带你大视角看人工智能发展
- 【搜索引擎基础知识2】网络爬虫的介绍
- java iterator获取索引_2020年Java面试题最新整理(1625)
- C语言字符串输出函数puts()的作用是什么
- 什么是堆栈的构造方法?向上生长堆栈,向下生长堆栈
- IntelliJ IDEA安装后需要必须做的一件事
- Linux中的压缩命令
- spark 类别特征_spark 机器学习基础 数据类型
- sun的java认证考试_Sun Java认证考试科目
- 一个对话让你明白架构师是做什么的?
- fastcgi php 进程用户 lighttpd,说说lighttpd的fastcgi
- oracle 数据泵导出时间,Oracle DMP备份文件使用数据泵expdp/impdp导出导入dmp文件
- 最喜欢的一款星光和光晕ps笔刷
- 狗都能看懂的CenterNet讲解及代码复现
- Chrome浏览器截取网页生成图片
- 2018四川省排名前十的卫校名单有哪些?
- 安徽科技学院2017-2018-1学期15电信12班《Java编程技术》课下作业~解题报告
- MySQL-限制结果-LIMIT(limit)
- 64位驱动 hp630打印机_HP Deskjet 1280打印机x64驱动下载|HP1280打印机windows7 x64位驱动 - 驱动无忧...
- IDEA中文件或文件夹 如何重命名?解决方法如下
热门文章
- 在ABAP/4中声明表格控制
- 42、Power Query-Text.Remove函数应用
- 估价分类不允许分离估价
- SM35/BDC Record / Log 导出
- 物流行业SAP整体解决方案
- 双11行业“三连冠”,鞋王百丽走对了哪几步?
- 信息服务器怎么填写,如何设定服务器信息
- python integer_【Python】string/list/integer常用函数总结
- cent 8.0 安装tomcat 9.0_Linux服务器:安装tomcat并部署war应用
- gmr 通信 matlab,matlab使用TCP/IP Server Sockets