[差分]It Rains Again

Posted Jedi_Pz

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[差分]It Rains Again相关的知识,希望对你有一定的参考价值。

我果然是个初学者级别的five
但是今天level++啦(滑稽)

Description

Suppose that in a Cartesian coordinate system on an infinite plane, the x-axis represents the ground and there are n rainscreens (We don\'t consider their thickness.) in the sky.

Every rainscreen can be described as a segment which starts from theand (x1,y1)ends at (x2.y2). Now if it starts to rain from the infinite high sky, I want you to tell me how many units of the x-axis will not get rained on.

To simplify the problem,the rain can only move vertically whenever it falls.

Note that two rainscreens can overlap and intersect with each other, and there is no rainscreen which is placed vertically.

这个其实是差分
差分数组的前缀和是到这里总量
我们在div[x1]++,div[x2]--
这样每一段不受别的影响
那么如何处理最后的结果呢?
如果目前大于零(没有被雨淋上)那就ans++

Input

The first line contains one positive integer n (1 \\leq n \\leq 100000)n(1≤n≤100000).

Each of the next n lines contains four positive integers x_1, y_1, x_2, y_2 (1 < x_1 < x_2 < 100000, 1 < y_1,y_2 < 100000), representing a rainscreen which starts from the (x_1, y_1)and ends at (x_2, y_2).

Output

The only one integer - the number of units of the x-axis which will not get rained on.

Example

Input
5
1 2 2 1
1 1 2 2
3 3 4 3
5 1 6 3
6 3 7 2
Output
4

Note

Consider the example, we can draw a picture like below:

It\'s easy to calculate the answer is 4.

#include<iostream>
#include<cmath>
#include<cstring>
using namespace std;
int main(){
    int n,div[100050];
    cin>>n;
    memset(div,0,sizeof(div));
    for(int i=1;i<=n;i++){
        int a,b,c,d;
        cin>>a>>b>>c>>d;
        div[a]++;
        div[c]--;
    }
    int cnt=0,ans=0;
    for(int i=0;i<=100000;i++){
        cnt+=div[i];
        if(cnt>0) ans++;
    }
    cout<<ans<<endl;
    return 0;
}

以上是关于[差分]It Rains Again的主要内容,如果未能解决你的问题,请参考以下文章

Codeforces 1065C Make It Equal(差分+贪心)

STM32下载提示flash timeout.reset the target and try it again

Spoken English Practice (yesterday) (Look, I just wanted to apologize again for yesterday? It's

svn报错cleanup failed–previous operation has not finished; run cleanup if it was interrupted的解决办法(代码片段

时序差分学习(temporary learning, TD)

这个片段中的这个是啥?