欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Tallest Cow POJ - 3263(差分)

程序员文章站 2022-03-06 11:58:38
...

题意:传送门
题解:这个题两种做法,第一种使用差分,考虑刚开始所有牛都是HH高,然后给出一组关系,相应的差分数组中的关系发生改变即可。第二种做法使用线段树lazy操作(没试)。
附上代码:

#include<iostream>
#include<set>
using namespace std;
const int N=10000+10;
int n,p,h,m,height[N],a,b;
int main()
{
    cin>>n>>p>>h>>m;
    height[1]=h;
    set<pair<int,int> >existed;
    for(int i=1;i<=m;i++){
        cin>>a>>b;
        if(a>b)swap(a,b);
        if(!existed.count({a,b})){
            existed.insert({a,b});
            height[a+1]--;height[b]++;
        }
    }
    for(int i=1;i<=n;i++){
        height[i]+=height[i-1];
        cout<<height[i]<<endl;
    }
    return 0;
}

相关标签: 差分