N:Count Same Number
FA(全体): kotatsugame_arigatou (31:05)
FA(オンサイト): kotatsugame_arigatou (31:05)
AC/Try: 12/17
原案:Taiki0715
問題概要
Nが与えられるのでN以下の正の整数で桁に現れる5未満の種類数と5以上の種類数が等しいものはいくつあるか?
制約
TLE解法
DP[i][j][S]=Nのi桁目まで見て未満フラグとleading zeroの状態がjでこれまでに出現した数の集合がS
これはO(Nd×2^d)で間に合わない。
想定解
以下の3つに場合分けする。
場合分け①ちょうどN
普通に数えて判定するだけ
場合分け②leading zeroがなく、N未満
上から見ていってi桁目でN未満が初めて確定したとする。
998244353
9982?????
0〜3
場合分け②leading zeroがなく、N未満
この時、i桁目より下の桁は0から9まで自由に決められる。
998244353
9982?????
0〜3
0〜9
場合分け②leading zeroがなく、N未満
i桁目の数字と何種類出現するかを固定するとi+1桁目以降の数字の決め方は包除原理でO(d)で求まる。
998244353
99822????
場合分け②leading zeroがなく、N未満
例(9982まで確定し、その次を2にした)
現在5未満は1種類、5以上は2種類なので種類数として2から5まで全探索する。(種類数として3を選択したとする)
5未満の残り0134から2個、5以上の残り567から1個を必ず選ぶ数として決める。この「必ず選ぶ」に違反するかどうかで包除をすると何通りあるか計算できる。
99822????
場合分け②leading zeroがなく、N未満
「i桁目を固定し」の部分はこれまでに出現した数字、出現していない5未満の数字、出現していない5以上の数字の3通りしか包除原理の係数を考えなくて良いので全体でO(N×d^2)でできる。
998244353
99822????
場合分け③leading zeroが1個以上ある
桁数が|N|未満で各桁が0から9まで自由に使えるので場合分け②と同じようにできる。
計算量
場合分け①がO(N)
場合分け②がO(N×d^2)
場合分け③がO(N×d^2)
全体でO(N×d^2)