?
— ボンド@競プロ (@bond_cmprog) November 13, 2021
Bondo416さんのキーエンスプログラミングコンテスト2021-Nov. (AtCoder Beginner Contest 227)での成績:2567位
パフォーマンス:751相当
レーティング:1515→1458 (-57) :(#AtCoder #キーエンスプログラミングコンテスト2021-Nov.(ABC227) https://t.co/5mDBsDmcTk
A - Last Card
$ A + K - 1 \pmod{N} $ が答え
void solve(){ int N, K, A; cin >> N >> K >> A; cout << (A - 1 + K - 1) % N + 1 << endl; }
B - KEYENCE building
$ 1 \leq a, b \leq 1000 $ の範囲で全探索をする
void solve(){ int N; cin >> N; vector<int> S(N); REP(i,N) cin >> S[i]; vector<int> ok(N); for(int a=1;a<=1000;a++) for(int b=1;b<=1000;b++){ ll sum = 4 * a * b + 3 * a + 3 * b; REP(i,N) if(S[i] == sum) ok[i] = 1; } cout << N - accumulate(ALL(ok), 0) << endl; }
C - ABC conjecture
$ 1 \leq a \leq \sqrt[3]{N} $ の範囲、$ 1 \leq b \leq \sqrt{\frac{N}{a}} $ の範囲となるので全探索をする
void solve(){ ll N; cin >> N; ll ans = 0; for(ll a=1;a*a*a<=N;a++){ for(ll b=a;b*b<=N/a;b++){ ans += N / (a * b) - b + 1; } } cout << ans << endl; }
D - Project Planning
プロジェクトが $ P $ 個作れるかどうかを二分探索をする
プロジェクトが $ P $ 個作れるかどうかは、$ \sum \min(A_i, P) <= PK $ を満たしていればいい
void solve(){ ll N, K; cin >> N >> K; vector<ll> A(N); REP(i,N) cin >> A[i]; auto check = [&](ll m) -> bool{ ll sum = 0; REP(i,N) sum += min(A[i], m); return (sum / m >= K ? true : false); }; ll l = 0, r = LINF; while(r - l > 1){ ll m = (l + r) >> 1; if(check(m)) l = m; else r = m; } cout << l << endl; }