公式

B - 山道ハイキング / Mountain Trail Hiking 解説 by kyopro_friends


ハイキングをシミュレーションしながら、これまでの満足度の最大値を記録すればよいです。

チェックポイント \(1\) に到達した時点の満足度は \(S_1\) であり、チェックポイント \(i-1\) にいる状態からチェックポイント \(i\) に移動すると、満足度は \(S_i-C_{i-1}\) 増えます。

実装例 (C++)

#include<bits/stdc++.h>
using namespace std;

int main(){
  int n;
  cin >> n;
  vector<int>s(n), c(n-1);
  for(int i=0; i<n; i++) cin >> s[i];
  for(int i=0; i<n-1; i++) cin >> c[i];

  long long ans = s[0], crr = s[0];
  for(int i=1; i<n; i++){
    crr += s[i] - c[i-1];
    ans = max(ans, crr);
  }
  cout << ans << endl;
}

実装例 (Python)

N = int(input())
S = list(map(int, input().split()))
C = list(map(int, input().split()))

ans = S[0]
crr = S[0]
for i in range(1, N):
  crr += S[i] - C[i-1]
  ans = max(ans, crr)

print(ans)

投稿日時:
最終更新: