AtCoder Beginner Contest 299 メモ
コンテストページ: Tokio Marine & Nichido Fire Insurance Programming Contest 2023(AtCoder Beginner Contest 299) - AtCoder
コンテスト中AC: A〜E
D - Find by Query
20回以下の指定なので、log時間の方法を疑います。すなわち、二分探索です。
最初、とします。最初、は、0......1です。
とします。 の場合、0...0...1という感じです。とすると、は、0......1となります。
の場合、0...1...1という感じです。とすると、は、0......1となります。
このように二分探索を繰り返すと、常には、0......1という状態が保たれます。となるまでこれを繰り返し、をとすれば、答えの条件を満たします。
E - Nearest Black Vertex
問題文中の条件である、
- 全てのについて、との距離がちょうどであるような頂点の内のいずれかを黒に塗る
について、どの頂点を黒にすればよいか決めることは困難です。しかし、白に塗る頂点は以下のように確定します。
- 全てのについて、との距離が未満であるような頂点は全て白で塗る
これにより、全てのについて、黒に塗った頂点との距離が最小のものが未満とならないことが保証されます。
白で塗った頂点以外は、何色で塗ってもよいです。そのため、条件を満たすために黒で塗るのが最適です。
これで白黒の塗り方が決まりました。後は、問題文の条件を満たすか確かめれば良いです。
塗り方の決定及び条件を満たすかの確認は全点対間最短経路が分かっていればよく、Warshall-Floyd法では間に合わないので、全頂点を始点としてBFSを行えばよいです。計算量はだと思います。