贝茜对她最近在农场周围造成的一切恶作剧感到抱歉,她同意帮助农夫约翰把一批新到的干草捆堆起来。

开始时,共有 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。


解题思路

  1. 用差分数组实现区间加操作
  2. 前缀和求原数组,然后排序后输出中间值

注意 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)相关推荐

  1. 倪文迪陪你学蓝桥杯2021寒假每日一题:1.11日(2017省赛A第9题)

    2021年寒假每日一题,2017~2019年的省赛真题. 本文内容由倪文迪(华东理工大学计算机系软件192班)和罗勇军老师提供. 后面的每日一题,每题发一个新博文,请大家看博客目录:https://b ...

  2. 【寒假每日一题】剪绳子(个人练习)详细题解+推导证明(第六天)

    文章目录 前言 题目 详细题解 写法1 O(nlogn)O(nlogn)O(nlogn) 推导证明 举一反三 总结 前言 今天终于出核酸检测的结果,还好大家都没事,不然怕是要封城了!!! 今天还是寒假 ...

  3. 【寒假每日一题】分巧克力(个人练习)详细题解+推导证明(第八天)附带转载程序员壁纸

    文章目录 前言 题目 详细题解 写法1 O(nlogn)O(nlogn)O(nlogn) 推导证明 举一反三 总结 前言 话说今天开始准备搞一个秋招的GitHub,算是复习一遍了. 今天还是寒假每日一 ...

  4. AcWing寒假每日一题2058. 笨拙的手指

    AcWing寒假每日一题2058. 笨拙的手指 题目描述 奶牛贝茜正在学习如何在不同进制之间转换数字. 但是她总是犯错误,因为她无法轻易的用两个前蹄握住笔. 每当贝茜将数字转换为一个新的进制并写下结果 ...

  5. 倪文迪陪你学蓝桥杯2021寒假每日一题:1.20日(2018省赛A组第8题)

    2021年寒假每日一题,2017~2019年的省赛真题. 本文内容由倪文迪(华东理工大学计算机系软件192班)和罗勇军老师提供. 后面的每日一题,每题发一个新博文,请大家每天看博客蓝桥杯专栏: htt ...

  6. 【寒假每日一题】数字三角形(个人练习)详细题解+推导证明(第二天)

    文章目录 前言 题目 详细题解 写法1 O ( n 2 ) O(n^2) O(n2) 推导证明 写法2 O ( n 2 ) O(n^2) O(n2) 推导证明 举一反三 总结 前言 昨天真是人生中奇葩 ...

  7. 倪文迪陪你学蓝桥杯2021寒假每日一题:1.19日(2018省赛A组第7题)

    2021年寒假每日一题,2017~2019年的省赛真题. 本文内容由倪文迪(华东理工大学计算机系软件192班)和罗勇军老师提供. 后面的每日一题,每题发一个新博文,请大家每天看博客蓝桥杯专栏: htt ...

  8. 倪文迪陪你学蓝桥杯2021寒假每日一题:2.1日(2019省赛A组第10题)

    2021年寒假每日一题,2017~2019年的省赛真题.本文内容由倪文迪(华东理工大学计算机系软件192班)和罗勇军老师提供.每日一题,关注蓝桥杯专栏: https://blog.csdn.net/w ...

  9. 倪文迪陪你学蓝桥杯2021寒假每日一题:1.15日(2018省赛A组第3题)

    2021年寒假每日一题,2017~2019年的省赛真题. 本文内容由倪文迪(华东理工大学计算机系软件192班)和罗勇军老师提供. 后面的每日一题,每题发一个新博文,请大家每天看博客蓝桥杯专栏: htt ...

  10. 倪文迪陪你学蓝桥杯2021寒假每日一题:1.26日(2019省赛A组第4题)

    2021年寒假每日一题,2017~2019年的省赛真题.本文内容由倪文迪(华东理工大学计算机系软件192班)和罗勇军老师提供.每日一题,关注蓝桥杯专栏: https://blog.csdn.net/w ...

最新文章

  1. 重载输入cin和输出cout运算符
  2. tf.reduce_mean解释
  3. Java开发面试技巧,如何设计一个优雅的RESTFUL的接口
  4. Nginx-02:Nginx基本概念
  5. buildroot的使用简介【转】
  6. python统计出现的中文标点_Python处理中文标点符号大集合
  7. linux资源使用统计指南,指南:工作量分析文档
  8. 《剑指Offer》 旋转数组的最小数字
  9. 【编程题】判断一个整数对应的二进制数是否是回文
  10. MNIST机器学习入门【学习笔记】
  11. cocos2d-x 在vs2010下的环境配置
  12. pip下载速度慢的解决方法
  13. python知识图谱智能问答_机器人之基于知识图谱的智能问答机器人
  14. STM32-实现us延时
  15. 小米手机全球已舍弃“MI”品牌,全面改用“xiaomi”全称品牌
  16. Qt开源作品33-图片开关控件
  17. 思维导图到底是什么-图说思维导图定义
  18. 【Matlab 六自由度机器人】关于灵活工作空间与可达工作空间的理解(附MATLAB推导代码)
  19. 保弘实业|大学生为什么要学会理财
  20. 台式机拷盘加固态硬盘(SSD)

热门文章

  1. thymeleaf中数字的日期格式以及货币格式
  2. Python入门笔记,代码练习——常用内置数据类型【持续更新】
  3. HBuilderX 连接雷电模拟器
  4. Python基础(适合初学-完整教程-学习时间一周左右-节约您的时间)
  5. 如何选购一款优质的台式电脑电源?
  6. react(子传父、父传子)
  7. Android百日程序:绘画程序-画手指路径
  8. 原神私服搭建一: 搭建运行环境(jdk,mongodb)
  9. 触屏计算机显示器CDU,科技:关于电脑显示器你所需要知道的
  10. 达梦数据库查看表字段VARCHAR类型的长度单位是BYTE还是CHAR