zoukankan      html  css  js  c++  java
  • XXFSDDX HDU6119 区间合并模板(交叉区间去重)

    原来要这样写啊(

    #include<bits/stdc++.h>
    #include<stdio.h>
    #include<algorithm>
    #include<queue>
    #include<string.h>
    #include<iostream>
    #include<math.h>
    #include<set>
    #include<map>
    #include<vector>
    #include<iomanip>
    using namespace std;
    #define ll long long
    #define pb push_back
    #define FOR(a) for(int i=1;i<=a;i++)
    const int inf=0x3f3f3f3f;
    const int maxn=1e5+9; 
    const int mod=1e9+7;
    
    struct node{
    	int l,r;
    }arr[maxn];
    node brr[maxn];
    
    int cmp(node a,node b){
    	if(a.l!=b.l)return a.l<b.l;
    	return a.r<b.r;
    }
    
    int main(){
    	int n,m;
    	while(~scanf("%d%d",&n,&m)){
    		FOR(n){scanf("%d%d",&arr[i].l,&arr[i].r);}
    		sort(arr+1,arr+1+n,cmp);
    		int cnt=1;
    		brr[1]=arr[1];
    		for(int i=2;i<=n;i++){
    			if(arr[i].l<=brr[cnt].r)brr[cnt].r=max(arr[i].r,brr[cnt].r);
    			else brr[++cnt]=arr[i];
    		}
    		int l=1,r=1,cur=0;
    		int ans=0;
    		for(r=1;r<=cnt;r++){
    			if(r!=1){
    				cur+=brr[r].l-brr[r-1].r-1;
    				while(cur>m){
    					cur-=brr[l+1].l-brr[l].r-1;
    					l++;
    				}
    			}
    			ans=max(ans,brr[r].r-brr[l].l+1+m-cur);
    		}
    		printf("%d
    ",ans);
    	}
    }


  • 相关阅读:
    仲兆鹏 160809329 第5次
    仲兆鹏160809329-第四次作业
    160809329 仲兆鹏 3
    张浩飞 160809307 (12)
    160809307 张浩飞
    160809307 张浩飞
    160809307 张浩飞(8)
    160809307 张浩飞(7)
    160809307 张浩飞
    160809307 张浩飞 5
  • 原文地址:https://www.cnblogs.com/Drenight/p/8611288.html
Copyright © 2011-2022 走看看