1 条题解
-
3
本人第篇题解……刚开始看错了,以为只有一个农民时要他开始的时间为第二个问题的答案……这道题十分的简单,区间合并+找最大值秒了。#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
- 上传者