zoukankan      html  css  js  c++  java
  • 差分数组+结构体排序

    链接:https://ac.nowcoder.com/acm/contest/4462/H
    来源:牛客网

    某电商平台有n个仓库,编号从1到n。
    当购进某种货物的时候,商家会把货物分散的放在编号相邻的几个仓库中。
    我们暂时不考虑售出,你是否能知道,当所有货物购买完毕,存放货物种类最多的仓库编号为多少?

    输入描述:

    在第一行中给出两个正整数n,m,1≤n,m≤1e5,分别代表仓库的数目和进货的次数。
    接下来 m 行,每行三个正整数l,r,d,1l,rn,1d1e9。编号在l和r之间的仓库收进编号为d的货物。

    输出描述:

    在一行中输出存放货物种类最多的仓库编号,若满足条件的仓库不止一个,则输出编号最小的那个。
    示例1

    输入

    复制
    5 5
    1 1 1
    3 3 1
    2 5 2
    5 5 1
    4 5 1

    输出

    复制
    3
    注意看到是:种类数最多,就要先排个序,就讨论区间的关系了
    #include<iostream>
    #include<algorithm>
    using namespace std;
    typedef long long ll; 
    const int maxn=1e6+100;
    struct node{
        ll l,r,w;
    }a[maxn];
    ll x[maxn];
    ll sum[maxn];
    bool cmp(node x,node y){
        if(x.w==y.w){
            return x.l<y.l; 
        }
        return x.w<y.w; 
    }
    int n,m;
    int main(){
        cin>>n>>m;
        for(int i=1;i<=m;i++){
            scanf("%d%d%d",&a[i].l,&a[i].r,&a[i].w);
        }
        sort(a+1,a+m+1,cmp);
        x[a[1].l]++;
        x[a[1].r+1]--;
        int p=a[1].r; 
        for(int i=2;i<=m;i++){
            if(a[i].w!=a[i-1].w){
                x[a[i].l]++;
                x[a[i].r+1]--;
            }
            else{
                if(a[i].r<=p){
                    continue;
                }
                else{
                    if(a[i].l>p){
                        x[a[i].l]++;
                        x[a[i].r+1]--;
                    }
                    else{
                        x[p+1]++;
                        x[a[i].r+1]--;
                    }
                    
                }
                
            }
            p=a[i].r;
        }
        for(int i=1;i<=n;i++){
            sum[i]=sum[i-1]+x[i];
        }
        ll ma=0;
        int ans;
        for(int i=1;i<=n;i++){
            if(sum[i]>ma){
                ma=sum[i];
                ans=i;
            }
        }
        cout<<ans<<endl;
    } 
     
  • 相关阅读:
    此生对我影响最大的三位老师
    介绍自己
    介绍自己
    第三周作业
    第二周作业
    PTA编程总结3
    PTA编程总结2
    PTA编程总结1
    2019年春季学期第七周作业.
    2019年春季学期第六周作业.
  • 原文地址:https://www.cnblogs.com/lipu123/p/14263505.html
Copyright © 2011-2022 走看看