rogramers:ディスクコントローラ-C+/priority queue演算子オーバーライド
13569 ワード
ディスクコントローラ
コード#コード# #include <string>
#include <vector>
#include <queue>
#include <iostream>
#include <algorithm>
using namespace std;
struct compare{
bool operator()(pair<int,int> a, pair<int,int> b){
if(a.second == b.second) return a.first > b.first; // 오름차순 정렬
return a.second > b.second; // 오름차순 정렬
}
};
int solution(vector<vector<int>> jobs) {
int ans = 0;
int time = 0;
int idx = 0;
priority_queue<pair<int,int>,vector<pair<int,int>>, compare> q;
sort(jobs.begin(), jobs.end());
do{
if(idx == jobs.size()) goto roop;
while(jobs[idx][0] <= time)
{
q.push({jobs[idx][0], jobs[idx][1]});
idx++;
if(idx == jobs.size()) break;
}
roop:
if(!q.empty()){
ans += (time-q.top().first) + q.top().second;
time += q.top().second;
q.pop();
}else time = jobs[idx][0];
}while(idx < jobs.size() or !q.empty());
ans /= jobs.size();
return ans;
}
#include <string>
#include <vector>
#include <queue>
#include <iostream>
#include <algorithm>
using namespace std;
struct compare{
bool operator()(pair<int,int> a, pair<int,int> b){
if(a.second == b.second) return a.first > b.first; // 오름차순 정렬
return a.second > b.second; // 오름차순 정렬
}
};
int solution(vector<vector<int>> jobs) {
int ans = 0;
int time = 0;
int idx = 0;
priority_queue<pair<int,int>,vector<pair<int,int>>, compare> q;
sort(jobs.begin(), jobs.end());
do{
if(idx == jobs.size()) goto roop;
while(jobs[idx][0] <= time)
{
q.push({jobs[idx][0], jobs[idx][1]});
idx++;
if(idx == jobs.size()) break;
}
roop:
if(!q.empty()){
ans += (time-q.top().first) + q.top().second;
time += q.top().second;
q.pop();
}else time = jobs[idx][0];
}while(idx < jobs.size() or !q.empty());
ans /= jobs.size();
return ans;
}
タスクのリクエストから終了までの最短時間
-->短い勤務時間のリクエストからその時間のリクエストが実行されたとき!
:
priority_queue<pair<int,int>>
特定compare함수
の製作方法/* 구조체로 만들고 나서 넣어줘야 함! */
struct compare{
/* 연산자 오버라이딩 */
bool operator()(pair<int,int> a, pair<int,int> b){
if(a.second == b.second) return a.first > b.first; // 오름차순 정렬
return a.second > b.second; // 오름차순 정렬
} // sort()의 compare와 반대로 짜줘야함
};
priority_queue<pair<int,int>,vector<pair<int,int>>, compare> q;
:struct
構造体後연산자 오버라이딩
compare
retrurn true
-> swap
return false
-> 그대로
첫번째 파라미터
-> next value
두번째 파라미터
-> current value
compare
return true
-> 그대로
return false
-> swap
첫번째 파라미터
-> current value
두번째 파라미터
-> next value
Reference
この問題について(rogramers:ディスクコントローラ-C+/priority queue演算子オーバーライド), 我々は、より多くの情報をここで見つけました https://velog.io/@neity16/Programers-디스크-컨트롤러-C-priorityqueue-연산자-오버라이딩テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol