티스토리 뷰
728x90
[Greedy] jewelryThief - priority_queue(heap)
예제: https://www.acmicpc.net/problem/1202
// 보석상 도둑 그리디 알고리즘
// 보석수, 가방수
// 한개의 가방에는 한개의 보석만 넣을 수 있다.
// 보석 무게, 보석 값어치
// 가방들마다 넣을 수 있는 무게
// algorithm > sort
// vector, queue
// pair, priority_queue(heap)
#include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
using namespace std;
#define SIZE 300000
int main() {
int jewelryCount, bagCount;
cin >> jewelryCount >> bagCount;
// ---------------------------- //
vector<pair<int, int>> jewelry;
double weight, value;
for(int i=0; i<jewelryCount; i++) {
cin >> weight >> value;
jewelry.push_back({ weight, value });
}
// ---------------------------- //
int bagWeight[SIZE];
for(int i=0; i<bagCount; i++) {
cin >> bagWeight[i];
}
sort(bagWeight, bagWeight+bagCount);
sort(jewelry.begin(), jewelry.end());
// ---------------------------- //
priority_queue<int> heap;
long long maxValue = 0;
for(int i=0, j=0; i<bagCount; i++) {
// 가방에 넣을 수 있는 보석들을 모두 힙에 넣는다.
while(j < jewelryCount && jewelry[j].first <= bagWeight[i]) {
heap.push(jewelry[j].second);
j++;
}
// 힙에 넣은 것들중 크기가 제일 큰 것을 지금 가방에 넣는다.
if(heap.size()) {
maxValue += heap.top();
heap.pop();
}
}
cout << maxValue << endl;
return 0;
}
728x90
'공부' 카테고리의 다른 글
[Sort] QuickSort (0) | 2018.09.11 |
---|---|
[DP] changeCoin? (0) | 2018.09.08 |
[SQL] groupBy & having? (0) | 2018.09.08 |
[SQL] join? (0) | 2018.09.08 |
[SQL] where & orderBy & limit (0) | 2018.09.08 |
댓글
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- 인스타그램
- 어떻게 능력을 보여줄 것인가?
- 책그림
- 연애학개론
- 레퍼럴
- 모델 Y 레퍼럴
- 테슬라 리퍼럴 코드
- 김달
- 모델y
- 개리마커스
- 테슬라 리퍼럴 코드 혜택
- 메디파크 내과 전문의 의학박사 김영수
- 테슬라 추천
- 테슬라 크레딧 사용
- COUNT
- 팔로워 수 세기
- 유투브
- 테슬라 레퍼럴 코드 확인
- wlw
- 테슬라 레퍼럴 적용 확인
- 클루지
- Bot
- 테슬라 리퍼럴 코드 생성
- 할인
- Kluge
- 테슬라
- 테슬라 레퍼럴
- follower
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함