101. 最高的牛差分 思维

Posted 辉小歌

tags:

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



分析后发现,不会重叠,故都是互相嵌套的这种方式。
我们可以初始化,所有的身高都是最大的身高,对于每个区间。区间内的数减1。
需要注意的是需要去重,避免重复减。

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int a[N],n,m,p,h;
void add(int l,int r,int c)

    a[l]+=c;
    a[r+1]-=c;

vector<pair<int,int>>ve;
int main(void)

    cin>>n>>p>>h>>m;
    for(int i=1;i<=n;i++) add(i,i,h);
    for(int i=1;i<=m;i++)
    
        int l,r; cin>>l>>r;
        if(l>r) swap(l,r);
        if(r-l==0) continue;//中间没人
        ve.push_back(l,r);
    
    sort(ve.begin(),ve.end());
    ve.erase(unique(ve.begin(),ve.end()),ve.end());//去重
    for(int i=0;i<ve.size();i++)
    
        int l=ve[i].first,r=ve[i].second;
        add(l+1,r-1,-1);
    
    for(int i=1;i<=n;i++) a[i]+=a[i-1],cout<<a[i]<<endl;
    return 0;

以上是关于101. 最高的牛差分 思维的主要内容,如果未能解决你的问题,请参考以下文章

差分POJ 3263 Tallest Cow

差分POJ 3263 Tallest Cow

Tallest Cow,题解

Tallest Cow,题解

差分BZOJ 1635 [Usaco2007 Jan]Tallest Cow 最高的牛

《算法竞赛进阶指南》打卡活动 #0x00 基本算法