※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 16169번 문제인 수행 시간이다.
문제는 아래 링크를 확인하자.
https://www.acmicpc.net/problem/16169
16169번: 수행 시간
첫 번째 줄에는 컴퓨터의 개수 n이 주어진다. (3 ≤ n ≤ 100) 두 번째 줄부터 n개의 줄에 걸쳐 1번부터 n번까지 각 컴퓨터의 계급과 동작 속도 t가 공백을 두고 주어진다. (1 ≤ t ≤ 100)
www.acmicpc.net
계급이 c인 컴퓨터들에 대하여 각각 가능한 가장 빠른 시각에 작업을 시작해 작업을 마치고 모든 계급이 c+1인 컴퓨터들에 정보를 전송하는 것을 시뮬레이션하는 것으로 문제를 해결하자. 즉, 계급단위로 시뮬레이션을 돌려 문제를 해결하자.
이는 아래 구현에서의 C와 같은 벡터의 배열을 이용해 편하게 구현할 수 있다.
아래는 제출한 소스코드이다.
#include <iostream>
#include <vector>
using namespace std;
int N;
vector<int> C[102];
int T[101];
int val[101];
int ans;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> N;
for (int i = 1; i <= N; i++) {
int c, t; cin >> c >> t;
C[c].emplace_back(i);
T[i] = t;
}
for (int c = 1; c <= N; c++) {
for(auto& x:C[c]) {
ans = max(ans, val[x] + T[x]);
for (auto& y : C[c + 1]) {
val[y] = max(val[y], val[x] + T[x] + (x - y) * (x - y));
}
}
}
cout << ans;
}
728x90
'BOJ' 카테고리의 다른 글
[BOJ 16166 // C++] 서울의 지하철 (0) | 2023.08.04 |
---|---|
[BOJ 25577 // C++] 열 정렬정렬 정 (0) | 2023.08.03 |
[BOJ 23059 // C++] 리그 오브 레게노 (0) | 2023.08.01 |
[BOJ 1322 // C++] X와 K (0) | 2023.07.31 |
[BOJ 1334 // C++] 다음 팰린드롬 수 (0) | 2023.07.30 |