ABC 297

https://atcoder.jp/contests/abc297

A. Double Click

https://atcoder.jp/contests/abc297/tasks/abc297_a

B. chess960

https://atcoder.jp/contests/abc297/tasks/abc297_b

C. PC on the Table

https://atcoder.jp/contests/abc297/tasks/abc297_c

D. Count Subtractions

https://atcoder.jp/contests/abc297/tasks/abc297_d

E. Kth Takoyaki Set

https://atcoder.jp/contests/abc297/tasks/abc297_e

ダイクストラみたいな感じで解く。距離 0 のところから始めてコスト $A_i$ で別のノードに移動。距離最初のノードからまたコスト $A_i$ で移動・・・というのを繰り返す。訪れたノードの数が $K+1$ になったら終了(最初の 0 のノードを数えているので $+1$ している)。

void solve() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);

    int N, K;
    cin >> N >> K;
    vll A(N);
    rep(i, N) cin >> A[i];

    set<ll> check, stock;
    stock.insert(0);

    while ((int)check.size() != K + 1) {
        auto it = stock.begin();
        ll x = *it;
        stock.erase(it);

        check.insert(x);
        for (ll a : A)
            stock.insert(x + a);
    }
    cout << *check.rbegin() << endl;
}

F. Minimum Bounding Box 2

https://atcoder.jp/contests/abc297/tasks/abc297_f

G. Constrained Nim 2

https://atcoder.jp/contests/abc297/tasks/abc297_g

Ex. Diff Adjacent

https://atcoder.jp/contests/abc297/tasks/abc297_h