はじめに
たなしょです。
解説を見て問題文の内容を理解しました。
問題文
https://atcoder.jp/contests/abc140/tasks/abc140_b
考え方
a配列の要素を-1する。 {1,2,3,4} → {0,1,2,3}
for (int i = 0; i < n; i++) { a[i]--; }
変数ansに配列bの要素を順々に足していく。
for (int i = 0; i < n; i++) { ans += b[i]; }
配列aの要素に1を足したものと配列aの次要素を比較して同一なら 変数ansに配列cは配列aの要素と同じ要素の値を足す。
いざ実装
int n; cin >> n; vector<int> a(n); for (int i = 0; i < n; i++) { cin >> a[i]; } vector<int> b(n); for (int i = 0; i < n; i++) { cin >> b[i]; } vector<int> c(n-1); for (int i = 0; i < n-1; i++) { cin >> c[i]; } for (int i = 0; i < n; i++) { a[i]--; } int ans = 0; for (int i = 0; i < n; i++) { ans += b[i]; } for (int i = 0; i < n - 1; i++) { if (a[i]+1 == a[i+1]) { ans += c[a[i]]; } } cout << ans << endl; return 0;
最後に
問題文がわからない痛い子です。
最後まで読んでいただいてありがとうございました。 もしよろしければtwitterアカウント(@piklus100yen)もフォローしていただけると幸いです!