[Luogu] P9735 题解
P9735 题解
题意很清楚,看不懂就多看几遍。
定义一个数组,存储第一个车站到第 \(i\) 个车站所需的时间,然后循环计算两个车站之间的所需的时间,并计算最小值和更新序号。
时间计算:
字符串 \(s=\text{Patrik}\) 时,时间等于 \(t_i\);
\(s=\text{Josip}\) 时,总时间就等于第一个车站到第 \(y_i\) 个车站的时间加上 \(t_i\)。
将时间存入数组并计算最小值和序号即可。
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll N = 1145141;
ll n, t, y, p[N], minn = N, ans;
string s;
int main() {
cin >> n;
for (ll i = 2; i <= n; ++i) {
cin >> s;
if (s[0] == 'P') {
cin >> t;
p[i] = t;
}
if (s[0] == 'J') {
cin >> y >> t;
p[i] = p[y] + t;
}
}
for (ll i = 2; i <= n; ++i) {
if (p[i] - p[i - 1] < minn) {
minn = p[i] - p[i - 1];
ans = i;
}
}
cout << minn << ' ' << ans - 1 << ' ' << ans;
return 0;
}

浙公网安备 33010602011771号