【Codeforces - 1000C】Covered Points Count(思维,离散化,差分)

题干:

You are given nn segments on a coordinate line; each endpoint of every segment has integer coordinates. Some segments can degenerate to points. Segments can intersect with each other, be nested in each other or even coincide.

Your task is the following: for every k∈[1..n]k∈[1..n], calculate the number of points with integer coordinates such that the number of segments that cover these points equals kk. A segment with endpoints lili and riri covers point xx if and only if li≤x≤rili≤x≤ri.

Input

The first line of the input contains one integer nn (1≤n≤2⋅1051≤n≤2⋅105) — the number of segments.

The next nn lines contain segments. The ii-th line contains a pair of integers li,rili,ri (0≤li≤ri≤10180≤li≤ri≤1018) — the endpoints of the ii-th segment.

Output

Print nn space separated integers cnt1,cnt2,…,cntncnt1,cnt2,…,cntn, where cnticnti is equal to the number of points such that the number of segments that cover these points equals to ii.

Examples

input

Copy

3
0 3
1 3
3 8

output

Copy

6 2 1 

input

Copy

3
1 3
2 4
5 7

output

Copy

5 2 0 

Note

The picture describing the first example:

Points with coordinates [0,4,5,6,7,8][0,4,5,6,7,8] are covered by one segment, points [1,2][1,2] are covered by two segments and point [3][3] is covered by three segments.

The picture describing the second example:

Points [1,4,5,6,7][1,4,5,6,7] are covered by one segment, points [2,3][2,3] are covered by two segments and there are no points covered by three segments.

 

题目大意:

给定n个区间线段,要求输出n个数,其中第i个数代表:被i个线段覆盖的点的个数。

解题报告:

离散化差分,跟2019icpc上海网络赛那题一样的套路。

AC代码:

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<queue>
#include<stack>
#include<map>
#include<vector>
#include<set>
#include<string>
#include<cmath>
#include<cstring>
#define FF first
#define SS second
#define ll long long
#define pb push_back
#define pm make_pair
using namespace std;
typedef pair<ll,ll> PLL;
const int MAX = 2e5 + 5;
map<ll,int> mp; 
int n;
ll l,r;
ll ans[MAX];//下标表示覆盖次数 
int main()
{cin>>n;for(int i = 1; i<=n; i++) cin>>l>>r,mp[l]++,mp[r+1]--;ll pre = -1,sum=0;for(auto it = mp.begin(); it != mp.end(); ++it) {ans[sum] += it->FF - pre;sum += it->SS;		pre = it->FF;				}for(int i = 1; i<=n; i++) {printf("%lld%c",ans[i],i == n ?'\n' :' ');}return 0 ;
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/439663.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Coursera自动驾驶课程第5讲:Vehicle Dynamic Modeling

在上一讲《Coursera自动驾驶课程第4讲&#xff1a;Safety Assurance for Autonomous Vehicles》中我们了解了自动驾驶汽车中一个非常重要的模块&#xff1a;安全模块。 本讲我们将学习新的模块&#xff1a;汽车运动学和动力学模块。&#xff08;这部分可能需要一定的理论力学和…

Java同步锁——lock与synchronized 的区别【转】

在网上看来很多关于同步锁的博文&#xff0c;记录下来方便以后阅读 一、Lock和synchronized有以下几点不同&#xff1a; 1&#xff09;Lock是一个接口&#xff0c;而synchronized是Java中的关键字&#xff0c;synchronized是内置的语言实现&#xff0c;synchronized是在JVM层面…

Coursera自动驾驶课程第6讲:Vehicle Longitudinal Control

在上一讲《Coursera自动驾驶课程第5讲&#xff1a;Vehicle Dynamic Modeling》中我们了解了汽车运动学和动力学模块。 本讲我们继续学习新的模块&#xff1a;汽车纵向控制。具体地&#xff0c;我们将学习PID控制算法&#xff0c;看看该算法是如何在自动驾驶汽车中应用的。 B站…

Java并发:线程共享变量可见性原理

0、线程安全性&#xff1a;线程安全性包括两个方面&#xff0c;①可见性。②原子性。 0.1、线程之间的通信&#xff1a;线程的通信是指线程之间以何种机制来交换信息。在命令式编程中&#xff0c;线程之间的通信机制有两种共享内存和消息传递。 &#xff08;1&#xff09;在共…

Coursera自动驾驶课程第7讲:Vehicle Lateral Control

在上一讲《Coursera自动驾驶课程第6讲&#xff1a;Vehicle Longitudinal Control》中我们了解了如何使用PID算法进行汽车纵向控制。 本讲我们继续学习新的模块&#xff1a;汽车横向控制。具体地&#xff0c;我们将学习三种控制算法&#xff1a;Pure pursuit&#xff0c;Stanle…

Coursera自动驾驶课程第8讲:Basics of 3D Computer Vision

在上一讲《Coursera自动驾驶课程第7讲&#xff1a;Vehicle Lateral Control》中我们了解了如何对汽车进行横向控制。 本课程第一个篇章就暂时告一段落了&#xff0c;接下来我们开始学习新的篇章。 课程第二个篇章是状态估计和定位模块。不过在这里我做了一下调整&#xff0c;我…

Coursera自动驾驶课程第9讲:Visual Features Detection Description and Matching

在上一讲《Coursera自动驾驶课程第8讲&#xff1a;Basics of 3D Computer Vision》中我们学习了计算机视觉基本知识。 本讲我们将学习计算机视觉中的视觉特征模块。 B站视频链接&#xff1a;https://www.bilibili.com/video/BV1PE411D72p 文章目录1. Introduction to Image f…

Coursera自动驾驶课程第10讲:Feedforward Neural Networks

在上一讲《Coursera自动驾驶课程第9讲&#xff1a;Visual Features Detection Description and Matching》中我们学习了如何进行图像特征检测&#xff0c;特征匹配以及如何构建视觉里程计来估计相机的运动。 本讲我们将学习神经网络模块&#xff0c;关于神经网络或深度学习网上…

守护进程和守护线程

对于JAVA而言&#xff0c;一般一个应用程序只有一个进程——JVM。除非在代码里面另外派生或者开启了新进程。 而线程&#xff0c;当然是由进程开启的。当开启该线程的进程离开时&#xff0c;线程也就不复存在了。 所以&#xff0c;对于JAVA而言&#xff0c;线程是完全可以由自…

Coursera自动驾驶课程第11讲:2D Object Detection

在上一讲《Coursera自动驾驶课程第10讲&#xff1a;Feedforward Neural Networks》中我们学习了神经网络的基础知识&#xff0c;包括损失函数&#xff0c;梯度下降&#xff0c;正则化&#xff0c;卷积网络等。 本讲我们将学习深度学习的一个重要应用&#xff1a;图像目标检测。…

Coursera自动驾驶课程第12讲:Semantic Segmentation

在上一讲《Coursera自动驾驶课程第11讲&#xff1a;2D Object Detection》我们学习了深度学习的一个重要应用&#xff1a;目标检测。 本讲我们将学习深度学习的另一个重要应用&#xff1a;语义分割。这是图片像素级的一个重要应用。 B站视频链接&#xff1a;https://www.bili…

多线程知识梳理(2) - 并发编程的艺术笔记

layout: post title: 《Java并发编程的艺术》笔记 categories: Java excerpt: The Art of Java Concurrency Programming. <img src"http://upload-images.jianshu.io/upload_images/658453-a94405da52987372.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240…

Coursera自动驾驶课程第13讲:Least Squares

在上一讲《Coursera自动驾驶课程第12讲&#xff1a;Semantic Segmentation》我们学习了深度学习的另一个重要应用&#xff1a;语义分割。至此&#xff0c;本课程的视觉感知模块就介绍完了。 从本讲开始&#xff0c;我们将学习一个新的模块&#xff0c;也是本课程的第三个模块&…

Coursera自动驾驶课程第14讲:Linear and Nonlinear Kalman Filters

在上一讲《Coursera自动驾驶课程第13讲&#xff1a;Least Squares》我们学习了最小二乘法相关知识。 本讲我们将学习20世纪最著名的一个算法&#xff1a;卡尔曼滤波。具体包括线性卡尔曼滤波&#xff08;KF&#xff09;&#xff0c;扩展卡尔曼滤波(EKF)&#xff0c;误差状态卡…

详解两阶段3D目标检测网络 Voxel R-CNN:Towards High Performance Voxel-based 3D Object Detection

本文介绍一篇两阶段的3D目标检测网络&#xff1a;Voxel R-CNN&#xff0c;论文已收录于AAAI 2021。 这里重点是理解本文提出的 Voxel RoI pooling。 论文链接为&#xff1a;https://arxiv.org/pdf/2012.15712.pdf 项目链接为&#xff1a;https://github.com/djiajunustc/Voxe…

java容器类1:Collection,List,ArrayList,LinkedList深入解读

1、 Iterable 与 Iterator Iterable 是个接口&#xff0c;实现此接口使集合对象可以通过迭代器遍历自身元素. public interface Iterable<T> 修饰符和返回值方法名描述Iterator<T>iterator()返回一个内部元素为T类型的迭代器default voidforEach(Consumer<?…

无限场景开放式仿真器 PGDrive:Improving the Generalization of End-to-End Driving through Procedural Generation

本文介绍一个拥有无限场景开放式驾驶仿真器&#xff1a;PGDrive&#xff0c;通过 Procedural Generation 技术可以生成无限多的驾驶场景&#xff0c;由香港中文大学周博磊团队开发。 论文地址&#xff1a;https://arxiv.org/pdf/2012.13681.pdf 项目地址&#xff1a;https://…

java容器类2:Map及HashMap深入解读

Java的编程过程中经常会和Map打交道&#xff0c;现在我们来一起了解一下Map的底层实现&#xff0c;其中的思想结构对我们平时接口设计和编程也有一定借鉴作用。(以下接口分析都是以jdk1.8源码为参考依据) 1. Map An object that maps keys to values. A map cannot contain du…

两阶段3D目标检测网络 SIENet: Spatial Information Enhancement Network for 3D Object Detection from Point Cloud

本文介绍一篇两阶段的3D目标检测网络&#xff1a;SIENet。 这里重点是理解本文提出的 Hybrid-Paradigm Region Proposal Network 和 Spatial Information Enhancement module。 论文链接为&#xff1a;https://arxiv.org/abs/2103.15396 项目链接为&#xff1a;https://githu…

java容器类3:set/HastSet/MapSet深入解读

介绍 Set&#xff1a;集合&#xff0c;是一个不包含重复数据的集合。&#xff08;A collection that contains no duplicate elements. &#xff09; set中最多包含一个null元素&#xff0c;否者包含了两个相同的元素&#xff0c;不符合定义。 上一篇学习了Java中的容器类的一…