Problem

Limits
TimeLimit(ms):3000
MemoryLimit(MB):256
M∈[1,105]
Xi∈[?109,109]
Yi∈[0,109]
Look up Original Problem From here
Solution
一个点可取,当且仅当,把它取了之后,上面的点不会失去平衡而掉下来。
开两个优先队列
q1,q2
。
q1
的顶元素最大,
q2
的顶元素最小,起初把所有可取的点都放入
q1,q2
,然后,轮流从
q1,q2
取点,如果访问过了就取下一个,取出点后,判断这个点是否可取,如果不可取则取下一个…每次取出的点,判断
(Xi?1,Yi?1),(Xi,Yi?1),(Xi+1,Yi?1)
这三个点是否可取,如果可取,则加入
q1,q2
。这样就可以得到M进制数。
Complexity
TimeComplexity:O(M×log2M)
MemoryComplexity:O(M)
My Code
//Hello. I'm Peter.
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include