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. 最高的牛差分 思维的主要内容,如果未能解决你的问题,请参考以下文章