k : 解説

13
Problem K Escape of Lappin the Phantom Thief 作問 kzyKT

Upload: takumi-yamashita

Post on 05-Apr-2017

29 views

Category:

Education


0 download

TRANSCRIPT

Page 1: K : 解説

Problem K Escape of

Lappin the Phantom Thief作問 kzyKT

Page 2: K : 解説

問題概要• n×mの長方形の範囲内でk個の(xi,yi)のマスからのマンハッタン距離が最も遠い場所の距離を求めよ

• 1 ≤ n,m ≤ 5×104

• 1 ≤ k ≤ 105

Page 3: K : 解説

解説• 最大の距離を二分探索

• (xi,yi)からのマンハッタン距離がd以下のマスでできているk個のひし形でn×mの長方形をすべて覆えるようなdを求めればいい

Page 4: K : 解説

解説d=0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0

d=2

0 0 1 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 1 0 1 1 1 0 0 0

n,mが大きいのでマンハッタン距離がd以下になるような マスをすべて埋めていくことはできない

Page 5: K : 解説

解説

0 0 1 0 0 0 0 0 0 0

0 1 1 1 0 1 0 0 0 0

1 1 1 1 1 1 1 0 0 0

0 1 1 1 1 1 1 1 0 0

0 0 1 0 1 1 1 0 0 00 0 1 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 1 0 1 1 1 0 0 0

45°回転

Page 6: K : 解説

解説45°回転するとマンハッタン距離がd以下のマスをひし形ではなく正方形として扱える

0 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 1 1 1 0 0 1 1 0 0 1 1 1 0 0 1 1 0 0 0 1 1 0 0 0 0 0 0 0 0

Page 7: K : 解説

解説• StarrySkyTreeを用いる

1行ずつ見ていき、正方形の始まりの区間に1足す、終わりの区間に-1足すを繰り返していく

1 1 1

1 1 1

-1 -1 -1

-1 -1 -11 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 2 2 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1

Page 8: K : 解説

1 1 1 1 1 1 1 1 1 1 1 2 2 1 1 1 1 1 1 1 1 1 1 1

解説1 1 1 1 1 0 1 1 1 1 1 0 1 2 2 1 1 1 0 1 1 1 1 1 0 1 1 1

1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1

1 1 0 1 1 0 1 1 0 1 1 0 1 2 1 0 1 1 0 1 1 0 1 1 0 1 1 0

実際の配列 幅3 幅2見た目

StarrySkyTreeを2つ用意して、交互に見るようにする

→ +

Page 9: K : 解説

解説同時にn×mの長方形が正方形で埋まっているか調べる 各行での、長方形の範囲内の最小値が0かどうか調べる 0があれば、さらに広げられる

調べる区間を広げたり、 狭めたりしていく

0 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 1 1 1 0 0 1 1 0 0 1 1 1 0 0 1 1 0 0 0 1 1 0 0 0 0 0 0 0 0

Page 10: K : 解説

解説 0 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 1 1 1 0 0 1 1 0 0 1 1 1 0 0 1 1 0 0 0 1 1 0 0 0 0 0 0 0 0

見た目

0 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 1 1 1 0 0 1 1 0 0 1 1 1 0 0 1 1 0 0 0 1 1 0 0 0 0 0 0 0 0実際の配列

区間の広げ方を工夫する必要がある

Page 11: K : 解説

解説• N log2 N

• 二分探索 log N • 1行ずつ見る N • StarrySkyTree log N

Page 12: K : 解説

ジャッジ解• kzyKT C++ 78行

• sate  C++ 156行

• beet  C++ 108行

• uku   C++ 123行

Page 13: K : 解説

結果• First Submission  ・On-site:  ・Online: semiexp 1h 0min

• First Accepted  ・On-site:  ・Online: maroon_rk 1h 3min

• Success Rate: 33.33% (2/6)