P1803乱雑なyyy /線分カバレッジ(Luogu)

オリジナルタイトルポータル

ここに画像の説明を挿入
ここに画像の説明を挿入
アイデア:間隔欲張りの質問、最初に開始時刻と終了時刻を格納する構造を定義し、次に終了時刻を小さいものから大きいものに並べ替える関数を定義し、並べ替え後に各終了時刻をトラバースすると、終了が早く満たされ、満足度が高くなります条件が満たされている場合は参加し、最後に数値を出力します

コードリファレンス

#include<bits/stdc++.h>
using namespace std;
struct Match//使用结构体将比赛的开始时间和结束时间保存下来
{
    
    
	int start;//开始时间
	int end;//结束时间
}M[1000000];
bool compare(Match x, Match y)//以结束时间从小到大排序
{
    
    
	return x.end < y.end;
}
int main()
{
    
    
	int n;
	cin>>n;
	for(int i=0;i<n;i++)
        cin>>M[i].start>>M[i].end;
	sort(M,M+n,compare);
	int pos = 0; //上一场比赛的结束时间
	int num=0;//能够参加比赛的次数
	for(int i=0;i<n;i++)
	{
    
    
		if(pos<=M[i].start)
		{
    
    
			pos = M[i].end;
			num++;
		}
	}
	cout<<num;
	return 0;
}

おすすめ

転載: blog.csdn.net/Bertil/article/details/106795129