AtCoder Beginner Contest 248 D問題 Range Count Query
問題
提出解答
問題の概要
整数列 が与えられる. 次の質問に 個答えよ.
- にある の個数を求めよ.
制約
解法
に対して, で にある の個数とする.
このとき, 列 を以下を満たすような列とする (このような列達は から一意に定まる).
この は を満たす を昇順に並べた列である. を用いることになり, この問題は
- にある 以上 以下の整数の個数
に帰着される.
帰着された問題の解法を考える. にある 以下の整数の個数を と書くことにすると, 帰着された問題の答えは である. そして, は昇順にならんでいることから, は二分探索で高速に求めることができる.
以上から, 個の問題を を前計算で求め, 各問に対して二分探索を利用することにより, 時間計算量 で処理できる.