[2021年春のPATグレードA] 7-2ラボアクセススケジューリング(25ポイント)

今日では、COVID-19の発生によるウイルスの蔓延を防ぐために、安全な社会的距離を保つ必要があります。その結果、国立研究所へのアクセスは厳しく制限されています。誰もが事前にラボ使用のリクエストを送信する必要があり、リクエストが承認された後にのみ入力できます。これで、翌日のすべての個人的な要求が与えられたので、承認された要求の可能な最大数で実行可能な計画を立てることになっています。特定の時間に最大で1人がラボに滞在できる必要があります。

入力仕様:

各入力ファイルには1つのテストケースが含まれています。各ケースは正の整数N(= 2?0?3 ??文字化けしているため、恥ずかしいです〜2000以下のようです)、ラボアクセスリクエストの数で始まります。その後、N行続いて、それぞれが次の形式でリクエストを送信します。

hh:mm:ss    hh:mm:ss  ここ  で、は1日の時点をで 表し、最も早い時刻 と最も遅い時刻を示します。リクエストごとに、2つの時点は、それぞれリクエストされた入場時間と退場時間です。退出時間は入場時間より後であることが保証されています。 hh:mm:ss時間:分:秒00:00:0023:59:59

すべての時間は1日以内であることに注意してください。時間は24時間制を使用して記録されます。

出力仕様:

出力は、プランで承認されたリクエストの総数を示すことになっています。

サンプル入力:

7
18:00:01 23:07:01
04:09:59 11:30:08
11:35:50 13:00:00
23:45:00 23:55:50
13:00:00 17:11:22
06:30:50 11:42:01
17:30:00 23:50:00

サンプル出力:

5

ヒント:

最後の2つを除いて、すべてのリクエストを承認できます。

題名:

アクティビティの数を指定してから、各アクティビティの開始時刻と終了時刻を入力します。1日24時間ありますので、最大でいくつのアクティビティを手配できるか聞いてください〜

ばかげているので、どこでイベントが開催されているのかさえわかりませんでした。実際、翌日のすべての個人的な要求を考えると、承認された要求の最大数で実行可能な計画を立てることになっています。特定の時間に最大1人がラボに滞在できる必要があります。この文は次のとおりです。最も重要な。

分析:[欲張りアルゴリズム]

この質問は最も単純で、かなり満足のいくものだと思います〜前学期に活動配置問題のアルゴリズムを学びました。これはこれと同じです。(だから、それは本当に放課後の質問ですハハハ

貪欲とは何ですか?欲張り戦略は、最も早く終了するアクティビティを1つずつ選択することです。

したがって、最初にアクティビティの終了に従ってアクティビティを遅かれ早かれソートし、次にソート後の最初のアクティビティ(すべてのアクティビティの中で最も早い終了アクティビティ)をブック配列に追加します。

ここのブック配列には、選択したアクティビティが格納されます。次に、次のアクティビティの開始時刻と最後に選択したアクティビティの終了時刻を比較し、競合がない場合は、それをブック配列に追加します。最後のアクティビティまでアクティビティ全体を循環させます。

すべてのアクティビティは事前に終了時刻に従ってソートされているため、ブック配列に格納されているアクティビティも時系列でソートされます。

最後に、本の配列の要素の数は、1日に配置できるアクティビティの最大数であるビンゴです。

コード:

#include<iostream>
#include<algorithm>
using namespace std;
struct plan{
	string start,end;
}p[2001];
int cmp(plan a,plan b){
	return a.end<b.end;
}
int book[2001]={0};
int main(){
	int n;
	cin>>n;
	for(int i=0;i<n;i++){
		cin>>p[i].start>>p[i].end;
	}
	sort(p,p+n,cmp);
    book[0]=0;    //选中第1个活动 可以没有这个哦,因为已经初始化为0了,为了更方便理解,把这个加上了。
	int j=0;
	for(int i=1;i<n;i++){
		if(p[i].start>=p[book[j]].end)
			book[++j]=i;
	}
	printf("%d",j+1);	
	return 0;
}

本当に簡単です〜この質問の私のコードのすべての文はナンセンスではありませんが、他の碑文のすべての文はナンセンスです(私は笑ったり泣いたりすることはできません...

食べ物は恥ずかしくないです。恥ずかしいのは、私の職業の隣に座っている大きな男が私たちの職業の最初の人だとは思っていなかったということです。私は...私は社会で本当に死んでいます。幸いなことに、彼は早く出発しました(彼の顔を覆う)

おすすめ

転載: blog.csdn.net/WKX_5/article/details/114755296