本文共 730 字,大约阅读时间需要 2 分钟。
将输入的时间按起点排序后就可以直接模拟了,注意区间嵌套的情况,开始的时候没考虑,导致WA了好几次。
代码如下:
/*ID: 15674811LANG: C++TASK: milk2*/#include#include #include #include #include using namespace std;typedef struct{ int t1,t2;}P;P p[1000000];bool cmp(P p1,P p2){ if(p1.t1 >n) { for(int i=1;i<=n;i++) fin>>p[i].t1>>p[i].t2; sort(p+1,p+n+1,cmp); int time1=0,time2=0; int Begin=p[1].t1,End=p[1].t2; time1=End-Begin; for(int i=2;i<=n;i++) { if(p[i].t1<=End&&p[i].t2>End) ///开始的时候只有第一个判定条件 { ///后面考虑到了区间嵌套的情况又加了第二个条件 End=p[i].t2; } else if(p[i].t1>End) { time1=max(time1,End-Begin); time2=max(time2,p[i].t1-End); Begin=p[i].t1; End=p[i].t2; } } time1=max(time1,End-Begin); ///如果有区间嵌套的情况,需要最后判一次 fout< <<" "< <
转载地址:http://ckrfb.baihongyu.com/