干草堆(寒假每日一题 2)
贝茜对她最近在农场周围造成的一切恶作剧感到抱歉,她同意帮助农夫约翰把一批新到的干草捆堆起来。
开始时,共有 NNN 个空干草堆,编号 111 ~ NNN。
约翰给贝茜下达了 KKK 个指令,每条指令的格式为 A B
,这意味着贝茜要在 A..BA..BA..B 范围内的每个干草堆的顶部添加一个新的干草捆。
例如,如果贝茜收到指令 101010 131313,则她应在干草堆 10,11,12,1310,11,12,1310,11,12,13 中各添加一个干草捆。
在贝茜完成了所有指令后,约翰想知道 NNN 个干草堆的中值高度——也就是说,如果干草堆按照高度从小到大排列,位于中间的干草堆的高度。
方便起见,NNN 一定是奇数,所以中间堆是唯一的。
请帮助贝茜确定约翰问题的答案。
输入格式
第一行包含 NNN 和 KKK。
接下来 KKK 行,每行包含两个整数 A,BA,BA,B,用来描述一个指令。
输出格式
输出完成所有指令后,NNN 个干草堆的中值高度。
数据范围
1≤N≤1061≤N≤10^61≤N≤106,
1≤K≤250001≤K≤250001≤K≤25000,
1≤A≤B≤N1≤A≤B≤N1≤A≤B≤N
输入样例:
7 4
5 5
2 4
4 6
3 5
输出样例:
1
样例解释
贝茜完成所有指令后,各堆高度为 0,1,2,3,3,1,00,1,2,3,3,1,00,1,2,3,3,1,0。
将各高度从小到大排序后,得到 0,0,1,1,2,3,30,0,1,1,2,3,30,0,1,1,2,3,3,位于中间的是 111。
解题思路
- 用差分数组实现区间加操作
- 前缀和求原数组,然后排序后输出中间值
注意 sort 函数的右区间是开区间(取不到)左闭右开
AC Code
#include<iostream>
#include<algorithm>using namespace std;const int N = 1000010;int a[N], b[N];void insert(int l, int r, int c){b[l] += c;b[r+1] -= c;
}int main(){int n, k, l, r;scanf("%d%d", &n, &k);while(k--){scanf("%d%d", &l, &r);insert(l, r, 1);}for(int i = 1; i <= n; i++) a[i] = b[i] + a[i-1];sort(a + 1, a + n + 1); // 优化:nth_element(a + 1, a + mid, a + n + 1);int mid = 1 + n >> 1;cout << a[mid] << endl;return 0;
}
优化
本题 sort(a + 1, a + n + 1)
函数
可采用 nth_element(a + 1, a + mid, a + n + 1);
进行优化
nth_element(); 函数参数 (begin, pos, end)
nth_element 函数相当于求第 kkk 大的数。
干草堆(寒假每日一题 2)相关推荐
- 倪文迪陪你学蓝桥杯2021寒假每日一题:1.11日(2017省赛A第9题)
2021年寒假每日一题,2017~2019年的省赛真题. 本文内容由倪文迪(华东理工大学计算机系软件192班)和罗勇军老师提供. 后面的每日一题,每题发一个新博文,请大家看博客目录:https://b ...
- 【寒假每日一题】剪绳子(个人练习)详细题解+推导证明(第六天)
文章目录 前言 题目 详细题解 写法1 O(nlogn)O(nlogn)O(nlogn) 推导证明 举一反三 总结 前言 今天终于出核酸检测的结果,还好大家都没事,不然怕是要封城了!!! 今天还是寒假 ...
- 【寒假每日一题】分巧克力(个人练习)详细题解+推导证明(第八天)附带转载程序员壁纸
文章目录 前言 题目 详细题解 写法1 O(nlogn)O(nlogn)O(nlogn) 推导证明 举一反三 总结 前言 话说今天开始准备搞一个秋招的GitHub,算是复习一遍了. 今天还是寒假每日一 ...
- AcWing寒假每日一题2058. 笨拙的手指
AcWing寒假每日一题2058. 笨拙的手指 题目描述 奶牛贝茜正在学习如何在不同进制之间转换数字. 但是她总是犯错误,因为她无法轻易的用两个前蹄握住笔. 每当贝茜将数字转换为一个新的进制并写下结果 ...
- 倪文迪陪你学蓝桥杯2021寒假每日一题:1.20日(2018省赛A组第8题)
2021年寒假每日一题,2017~2019年的省赛真题. 本文内容由倪文迪(华东理工大学计算机系软件192班)和罗勇军老师提供. 后面的每日一题,每题发一个新博文,请大家每天看博客蓝桥杯专栏: htt ...
- 【寒假每日一题】数字三角形(个人练习)详细题解+推导证明(第二天)
文章目录 前言 题目 详细题解 写法1 O ( n 2 ) O(n^2) O(n2) 推导证明 写法2 O ( n 2 ) O(n^2) O(n2) 推导证明 举一反三 总结 前言 昨天真是人生中奇葩 ...
- 倪文迪陪你学蓝桥杯2021寒假每日一题:1.19日(2018省赛A组第7题)
2021年寒假每日一题,2017~2019年的省赛真题. 本文内容由倪文迪(华东理工大学计算机系软件192班)和罗勇军老师提供. 后面的每日一题,每题发一个新博文,请大家每天看博客蓝桥杯专栏: htt ...
- 倪文迪陪你学蓝桥杯2021寒假每日一题:2.1日(2019省赛A组第10题)
2021年寒假每日一题,2017~2019年的省赛真题.本文内容由倪文迪(华东理工大学计算机系软件192班)和罗勇军老师提供.每日一题,关注蓝桥杯专栏: https://blog.csdn.net/w ...
- 倪文迪陪你学蓝桥杯2021寒假每日一题:1.15日(2018省赛A组第3题)
2021年寒假每日一题,2017~2019年的省赛真题. 本文内容由倪文迪(华东理工大学计算机系软件192班)和罗勇军老师提供. 后面的每日一题,每题发一个新博文,请大家每天看博客蓝桥杯专栏: htt ...
- 倪文迪陪你学蓝桥杯2021寒假每日一题:1.26日(2019省赛A组第4题)
2021年寒假每日一题,2017~2019年的省赛真题.本文内容由倪文迪(华东理工大学计算机系软件192班)和罗勇军老师提供.每日一题,关注蓝桥杯专栏: https://blog.csdn.net/w ...
最新文章
- 重载输入cin和输出cout运算符
- tf.reduce_mean解释
- Java开发面试技巧,如何设计一个优雅的RESTFUL的接口
- Nginx-02:Nginx基本概念
- buildroot的使用简介【转】
- python统计出现的中文标点_Python处理中文标点符号大集合
- linux资源使用统计指南,指南:工作量分析文档
- 《剑指Offer》 旋转数组的最小数字
- 【编程题】判断一个整数对应的二进制数是否是回文
- MNIST机器学习入门【学习笔记】
- cocos2d-x 在vs2010下的环境配置
- pip下载速度慢的解决方法
- python知识图谱智能问答_机器人之基于知识图谱的智能问答机器人
- STM32-实现us延时
- 小米手机全球已舍弃“MI”品牌,全面改用“xiaomi”全称品牌
- Qt开源作品33-图片开关控件
- 思维导图到底是什么-图说思维导图定义
- 【Matlab 六自由度机器人】关于灵活工作空间与可达工作空间的理解(附MATLAB推导代码)
- 保弘实业|大学生为什么要学会理财
- 台式机拷盘加固态硬盘(SSD)