반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- red-black tree
- data_structure
- 예제
- connected_component
- list
- STL
- 구현
- 백준
- singly Linked List
- Pair
- Heap
- class_template
- template
- 자료구조
- c++
- qsort
- 문법
- Articulation_Point
- sort
- 알고리즘
- '0'
- 5397
- Critical_Path_Analysis
- deletion
- function_template
- Algorithm
- sstream
- 총정리
- 13305
- Biconnected_Component
Archives
- Today
- Total
- Today
- Total
- 방명록
어제의 나보다 성장한 오늘의 나
[c++][Greedy] 백준 13305번 문제 풀이 본문
반응형
알고리즘
도시를 하나 씩 옮겨가면서
첫 번째 도시~ 현재 도시 중 가장 주유 값이 적은 것을 선택한다.
현재도시~다음 도시 까지의 도로의 길이를 구한다.
(첫 번째 도시 ~ 현재도시 중 가장 적은 주유값) * (현재도시~다음 도시 까지의 도로의 길이) 를 total에 더한다.
이 과정을 첫 번째 도시 부터 마지막 도시까지 적용하면 쉽게 구할 수 있다.
Coding
#include <iostream>
#include <vector>
using namespace std;
int main(int args ,char** argv){
int N ;
long long int temp;
cin >> N;
vector<long long int> street;
vector<long long int> cost_gas;
for(int i = 0 ; i < N-1 ; ++i){
cin >> temp;
street.push_back(temp);
}
for(int i = 0 ; i < N; ++i){
cin >> temp;
cost_gas.push_back(temp);
}
long long int min_in_range = cost_gas[0];
long long int total = min_in_range * street[0];
for(int i = 1 ; i < N-1 ; ++i){
if(min_in_range > cost_gas[i]) min_in_range = cost_gas[i];
total += (street[i] * min_in_range);
}
cout << total;
}
※ 주의할 점
입력 값이
N은 200,000 까지 이지만
리터당 주유값 과 거리는 1,000,000,000 이하 이므로, long long int를 사용해 줘야 한다.
https://www.acmicpc.net/problem/13305
반응형
'c++ > 백준 문제 풀이' 카테고리의 다른 글
[c++][Greedy] 백준 10610번 문제 풀이 (0) | 2022.02.22 |
---|---|
[c++][Greedy] 백준 1789번 문제 풀이 (0) | 2022.02.22 |
[c++][Greedy] 백준 11399번 문제 풀이 (0) | 2022.02.20 |
[c++][Greedy] 백준 1541번 문제 풀이 (0) | 2022.02.19 |
[c++][문제 풀이] 백준 18870번 <좌표 압축> (0) | 2022.02.13 |
Comments