Codeforces Beta Round #19 D. Points
生活随笔
收集整理的這篇文章主要介紹了
Codeforces Beta Round #19 D. Points
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題意:
?給定一個平面, add(x,y), 增加一個點(x,y),保證以前不存在; delete(x,y), 刪除一個點(x,y),保證存在你; query(x,y), 詢問嚴格大于(x,y)的點,輸出其中最小的一個,x為第一關鍵字,y為第二關鍵字。
?
思路:
A
數據范圍為2*10^5, 每個值的范圍為10^9, 按照(x,y)離散化, 按照x建立(m=不同(x,y)對的個數)區間為1……m的線段樹, 在每個葉子結點上來存儲當前信息是否存在,每個結點上記錄當前表示區間有沒有值存在和最大的y是多少。在刪除的時候重置下標記。 查找的時候先根據x確定一個xi>x的線段樹區間范圍,然后在這個區間中查找一個滿足yi>y的最小的y。
?
B
按照x離散化,為每個x建立一個set,存儲當前x對應的y的信息。 按照x為區間建立線段樹, 保存結點對應區間是否存在點對和區間中最大的y的信息。 ?在增加的時候走到相應的x那里, 然后在集合中增加。 ?在刪除的時候走到相應的x那里,然后在集合中刪除。 需要注意更新最大值y。 在查找的時候,查找xi>x的區間,在相應的區間中查找滿足yi>y的最小的y。找到相應的x,然后在x中查找yi>y的最小值。 輸出結果。
轉載于:https://www.cnblogs.com/wzb-hust/p/4657181.html
總結
以上是生活随笔為你收集整理的Codeforces Beta Round #19 D. Points的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 3.Dashboard的使用
- 下一篇: dnf纯c代表什么(17173.com)