AtCoder Beginner Contest 242 G問題 Range Pairing Query
問題
提出解答
問題の概要
長さ の整数列 が与えられる. 次の 個の問 に答えよ.
- 以下を満たす最大の を求めよ.
- 個の整数 は互いに異なる.
制約
解法
まず, が与えられたときの答え を考える. で にある の数とする. すると,
となることがわかる.
ここで, がわかっているとき, はシグマの の部分のみ足すべき項が変わりうることを頭に入れると,
となる.
これ以外にも, から が比較的簡単にわかる.
このように, から が比較的簡単にわかり, 求めるべき区間がたくさんある場合は Mo アルゴリズムが有効的である.
Mo アルゴリズムを簡単に説明すると, がわかっている状況から を求めたい. このとき,
のようにして大量のクエリを処理するが, この途中経路を工夫する. このアルゴリズムを Mo アルゴリズムという.
計算量についての詳細は省略するが, で求めることができる.