ながめも

競技プログラミングについて

AtCoder Beginner Contest ABC166 参加記

5完で水パフォでした。ムーブがダメダメすぎましたし、Eは無限人が瞬殺していたので解けたことで喜ぶこともできないみたいです。Dは問題文が優しくないなあと思いつつも、よく読まない人が悪いということになるので・・・

A

はい

B

お菓子持ってる人を管理していくだけです。1-indexedになっているので注意。

C

誤読して難しい問題を解いていました。また、辺の数が少ないので全ての頂点から全てのへんを見ても間に合いますね。本番は無駄な実装をしてしまったのが反省です。

D

問題文をよく読まず、解がない場合についても考えて無駄に時間を浪費しました。

(x+1)^{5} - x^{5}\ge 5x^{5}なので、A,B10^{3}くらいまで探索すれば十分です。

E

条件を数式に落としてみると、i \lt j仮定して

j - i = A_i + A_j

移項して

A_i + i = j - A_j

よって、indexを進めながら自分より後ろの分布をmapで管理して\Theta(N)で解けます。

int main() {

    int N;
    cin >> N;
    vector<ll> A(N);
    rep(i,N)cin >> A[i];
    map<ll, int> map;
    ll ans = 0;
    rep(i,N){
        ans += map[(i+1)-A[i]];
        map[A[i]+(i+1)]++;
    }
    cout << ans << endl;

}

F

DPをしようとして書いていたら時間切れしました。 貪欲でいいようですがまだ確認できていません。