1 条题解

  • 3
    @ 2024-12-21 20:29:39

    本人第nn篇题解……

    刚开始看错了,以为只有一个农民时要他开始的时间为第二个问题的答案…… 这道题十分的简单,区间合并+找最大值秒了。

    #include <bits/stdc++.h>
    using namespace std;
    int n,l=0,maxn=0,minn=0;
    struct tabl{
    	int s,e;
    }a[5001];
    bool cmp(tabl x,tabl y)
    {
    	return x.s<y.s;
    }
    int main()
    {
    	cin>>n;
    	for (int i=1;i<=n;i++){
    		int now=i;
    		cin>>a[i].s>>a[i].e;
    		l++;
    		for (int j=1;j<=l;j++){
    			if (now==j){
    				continue;
    			}
    			if (a[now].s<=a[j].e && a[now].e>=a[j].s){
    				/*怎么合并呢?请补全代码*/
    				a[now].s=0x7fffffff;//无效化被合并的区间
    				now=j;
    				j=1;
    			}
    		}
    	}
    	sort(a+1,a+1+l,cmp);
    	for (int i=1;i<=l;i++){
    		if (a[i].s==0x7fffffff){
    			break;
    		}
    		maxn=max(a[i].e-a[i].s,maxn);
    		minn=max((i==1?0:a[i].s-a[i-1].e),minn);
    	}
    	cout<<maxn<<' '<<minn;
    }
    

信息

ID
7
时间
1000ms
内存
256MiB
难度
9
标签
递交数
118
已通过
8
上传者