白駿1931:会議室を手配する.cpp
2106 ワード
<ソース>
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main(){
int n;
cin >> n;
int begin[n]; int end[n];
vector<pair<int,int>> order;
for(int i = 0; i < n; i++){
cin >> begin[i] >> end[i];
}
for(int i = 0; i < n; i++){
order.push_back(make_pair(end[i],begin[i]));
}
sort(order.begin(),order.end());
int earliest = 0; int selected = 0;
for(int i = 0; i < n; i++){
int meetingBegin = order[i].second;
int meetingEnd = order[i].first;
if(earliest <= meetingBegin){
earliest = meetingEnd;
selected++;
}
}
cout << selected << endl;
return 0;
}
int n:会議数
int begin[n],end[n]:各会議の開始と終了時間
vector
int least:最も早く終了した会議
int selected:選択した会議の数
int meetingBegin,meetingEnd:各会議の開始時間と終了時間
1)pairを用いて会議開始時間と会議終了時間を組み合わせてベクトルに格納する.
2)会議終了時間を基準に並べ替えを行う.
3)会議終了時に最近の会議開始値を見つけ、会議終了時刻に設定する
4)selectedを出力します.
1) pair<[type1],[type2]> p
:使用するデータ型1,2を挿入し、タイプpairクラスpを作成する
2)p.first,p.secode:1番目のパラメータ、2番目のパラメータ
3)make pair(変数1,変数2)
:変数1、変数2のpair
実は本で勉強しているときに見たアルゴリズムなので、簡単に解決できます.グリディアルゴリズムがグリディアルゴリズムであることを意識すると、次の解決は容易なようだ.グリディアルゴリズムが利用可能かどうかを確認します.
Reference
この問題について(白駿1931:会議室を手配する.cpp), 我々は、より多くの情報をここで見つけました https://velog.io/@hello_hidi/백준-1931회의실-배정.cppテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol