たなしょのメモ

日々勉強していることをつらつらと

B - Buffet

はじめに

たなしょです。

解説を見て問題文の内容を理解しました。

問題文

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)もフォローしていただけると幸いです!