[白俊1516]ゲーム開発
質問する
白駿1516
を選択します。
に答える
解は1043号とほぼ同じです.必ず先行する必要のない建物があるので、これらの建物を建てる時間をすべて貯めておきます.
1~Nを巡回し続け、建築時間の最大値を取得した後、その建築時間を更新する.
何も更新していなければ、リングから出ます.
コード#コード#
#include <bits/stdc++.h>
const int dx[4] = { 1,0,-1,0 };
const int dy[4] = { 0,-1,0,1 };
using namespace std;
int n;
int arr[501];
int original[501];
vector<int> v[501];
int main() {
cin.tie(0); cout.tie(0); ios_base::sync_with_stdio(false);
cin >> n;
for (int i = 1; i <= n; i++) {
int x; cin >> x;
arr[i] = x;
original[i] = x;
while (true) {
cin >> x;
if (x == -1) break;
v[i].push_back(x);
}
}
while (true) {
bool c = false;
for (int i = 1; i <= n; i++) {
int M = 0;
for (int j = 0; j < v[i].size(); j++) {
M = max(M, arr[v[i][j]]);
}
if (arr[i] != original[i] + M) {
c = true;
arr[i] = original[i] + M;
}
}
if (!c) break;
}
for (int i = 1; i <= n; i++) cout << arr[i] << '\n';
return 0;
}
Reference
この問題について([白俊1516]ゲーム開発), 我々は、より多くの情報をここで見つけました https://velog.io/@asdsa2134/백준-1516-게임-개발テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol