用开始时间和结束时间的差值排序有问题吗
查看原帖
用开始时间和结束时间的差值排序有问题吗
440751
KIKIxiaohua楼主2022/3/6 21:44

不知道这个思路那错了,求帮助!!

#include<iostream>
#include<algorithm>
using namespace std;
#define ios ios::sync_with_stdio(false);cin.tie(0);cout.tie(0)
#define endl '\n' 
typedef long long ll;
const int N=1e6+9;
struct node{
	int fir;
	int sec;
	int cha;
}p[N];
bool cmp(node a,node b){
	if(a.cha!=b.cha)return a.cha<b.cha;
	else return a.fir<b.fir;
}
int a[N];
void solve(int x,int y){
	for(int i=x;i<=y;i++)a[i]=1;
}
bool cmp_1(int x,int y){
	for(int i=x;i<=y;i++){
		if(a[i]==1&&i!=x)return 0;
	}
	return 1;
}
int main(){
	ios;
	int n,ans=0;
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>p[i].fir>>p[i].sec;
		p[i].cha=p[i].sec-p[i].fir;
	}
	sort(p+1,p+1+n,cmp);
	for(int i=1;i<=n;i++){
		if(cmp_1(p[i].fir,p[i].sec)){
			solve(p[i].fir,p[i].sec);
			ans++;
		}
	}
	cout<<ans<<endl;
	return 0;
} 

2022/3/6 21:44
加载中...