[AtCoder] ABC 158 C – Tax Increase
消費税を題材にした問題ですね。全探索をするのが楽ですが、ここでは別の解き方をしようと思います。
\( A \) に着目\( A \) に着目すると、
\
を満たす \( x \) を求めれば ...
[AtCoder] ABC 157 E – Simple String Queries
区間和のような情報が必要なので、セグメント木を使います。\( 1 \) 文字目から \( i \) 文字目までの文字の種類を \( 2 \) 進数を用いて表現します。これは、\( 26 \) ビットで表現できます。これをセグメ ...
[AtCoder] ABC 157 D – Friend Suggestions
まず初めに、友達関係の Union-Find を作成します。このとき、人 \( i \) の友達の数を \( f_i \) として数えます。次に、人 \( i \) のブロック人数を \( b_i \) と、人 \( i \) ...
[AtCoder] ABC 157 C – Guess The Number
\( d_i \) を上位から \( i \) 桁目の数字とします。\( d \) を \( -1 \) で初期化し、条件を満たすように数字を決めた時、\( d_i \) が異なる数字を取るときは整数が存在しません。また、\( ...
[AtCoder] ABC 156 E – Roaming
部屋 \( i \) にいる人の数を \( a_i \) とすると、
\
が成り立ちます。このとき、\( a_i \geq 0 \) を満たす整数解は、\( {}_{2n – 1} \mat ...
[AtCoder] ABC 156 D – Bouquet
二項係数の剰余に関する問題です。二項係数の和は、
\
となるので、花束の種類は \( 2^n – 1 \) 通りあります。したがって、求める答えは、\( 2^n – 1 R ...
[AtCoder] ABC 156 C – Rally
問題は最小二乗法に関するものなので、最適な座標は平均値となります。最小二乗法の解説が詳しいです。
コード#include <bits/stdc++.h>using namespace std;typedef lon ...
[AtCoder] ABC 155 E – Payment
\( N \) を数値として扱うと制約が大きすぎるので、桁DPを行います。上位 \( i \) 桁目までの数字に対して、\( d(i, 0) \) を \( i \) 桁目の数字の分だけお札を使ったときの最小値とし、\( d( ...
[AtCoder] ABC 155 D – Pairs
\( A_i = 0 \) となる個数を \(N_0 \) とし、\( A_i < 0 \) となる数列を新たに \( B \) とし、\( A_i > 0 \) となる数列を新たに \( C \) とします。この ...
[AtCoder] ABC 155 C – Poll
マップを使って文字のカウントをし、最多得票の文字列を辞書順に出力します。自作の比較関数を定義すれば整列を楽に行えます。
コード#include <bits/stdc++.h>using namespace std; ...