(CSP2019模擬)DTOJ 4629 世界

2021-09-29 12:15:31 字數 1097 閱讀 9520

有乙個虛無的結界,隔開了兩個世界。

人們在結界內遊蕩,而遠方的星辰在結界外。

我們可以把結界看作 x

xx 軸,那麼人們都在 x

xx 軸下方,而星星都在 x

xx 軸上方。

人們本應該能看到所有的星星,但是結界外( x

xx 軸上方)出現了幾座牆,擋住了人們的視線。牆是平行於 x

xx 軸的。

現在想問,每個人分別能看到多少星星。

測試點編號

n nnm

mmq

qq1~3

1000

\le 1000

≤1000≤

5\le 5

≤5≤

1000

\le 1000

≤100

04~6

40000

\le 40000

≤40000

= 1=1

=1≤

40000

\le 40000

≤40000

7~10

40000

\le 40000

≤40000

5\le 5

≤5≤

40000

\le 40000

≤40000

先考慮m=1的情況,即計算每個人在乙個角度範圍內的星星數,但每個人的位置不同,故考慮對映到一條公共的直線——x軸上。於是算出人、星星和牆端點的直線與x軸的交點,即對映到一段區間上,對於乙個人,乙個星星被擋住,當且僅當星星對映的區間完全包含人的區間,於是轉為乙個二維偏序問題。

注意到m很小,考慮列舉牆的集合,但這樣會算重,那麼每次計算出一定被這個集合的所有牆都擋住的星星數,容斥一下即可。對於多堵牆,考慮乙個星星要被所有的牆對於乙個人被擋住的條件,先求出牆的最高位置和人的視角範圍的交集,那麼在這個交集中的星星對映的區間一定都包含這個交集,否則一定存在不包含的,即星星對映的交集完全包含人對映的交集,於是又轉化為乙個二維偏序問題。

CSP2019模擬 DTOJ 4597 拙者

給定乙個長度為n nn的括號序列,有q qq次操作如下 1.把乙個位置p pp的括號方向反轉。2.詢問乙個區間 l,r l,r l,r 求把它變為乙個合法括號序列最小需要刪除的括號個數。3.與2類似,但要求反過來看 即從r到l看,但括號方向不反轉 也是乙個合法括號序列。資料範圍 n,q 300000...

(CSP2019模擬)閱讀

有n nn個字串,每次可以把每個字串都標記至多乙個字首,但這些字首之間不能有包含關係,求把所有字串的所有字首都標記完的最小次數。資料範圍 n nn,字串總長 100000 le100000 10000 0 如果乙個字串s ss的字首a aa包含於另乙個字串t tt的字首b bb,那麼a aa是t t...

CSP2019模擬測試 遊戲

給定乙個n m n mn m的矩形方格紙,每次可以把它裁為兩個子矩形,若裁出乙個1 1 1 11 1則勝,判斷先手是否必勝。n 2000,m 2000 n le 2000,m le 2000 n 2000 m 2 000 直觀的想法是設f i j f i j f i j 為i ji j i j的矩形...