用开始时间和结束时间的差值排序有问题吗

P1803 凌乱的yyy / 线段覆盖

@[KIKIxiaohua](/user/440751) 差值只能表示时间的长度
by _Goodnight @ 2022-03-06 22:11:42


@[KIKIxiaohua](/user/440751) ~~由于已经AFO了,代码就不看了~~ 你应该是觉得时间长度越短越早开始就行了吧,但是如果我有个1点开始的持续1h的比赛和一个2点开始的持续10min的比赛,难道我要先参加2点那个吗
by _Goodnight @ 2022-03-06 22:13:45


@[KIKIxiaohua](/user/440751) 3 0 5 3 7 6 30
by cp152 @ 2022-03-07 11:30:34


@[KIKIxiaohua](/user/440751) 3 0 5 3 7 6 30
by cp152 @ 2022-03-07 11:31:04


你的代码太复杂了,以至于自己都看不大懂了吧? ``` #include<bits/stdc++.h> using namespace std; const int N=1e6; struct competition{ int start; int finish; }c[N]; int n; int ans=1; bool cmp(struct competition x,struct competition y){ return x.finish<y.finish;//排结束时间 } int main(){ cin>>n; for(int i=1;i<=n;i++){ cin>>c[i].start>>c[i].finish; } sort(c+1,c+n+1,cmp);//从小到大排,不至于错过场次 int p=1;//本场值 for(int i=2;i<=n;i++){//从第二场开始,第一场已经完事 if(c[i].start>=c[p].finish)ans++,p=i;//如果下一场比赛比这一场晚,ans(场数)就加一,此时p就变成这场的下标 } printf("%d",ans); } ```
by wxzlkal @ 2022-03-13 10:51:04


|