第12屆中南校賽 E(樹狀陣列離散化,菱形查詢)

2021-08-19 06:37:12 字數 437 閱讀 9275

【e:ez's binoculars】

題意:

給你一些點(n<1e5),然後其實是每次詢問給你乙個中心在( x , y )的四邊相等的菱形,對角線長為d,求問多少點在菱形裡。

官方題解:

首先可以想到二維樹狀陣列維護。但是顯然記憶體不允許,時間複雜度也不允許。 所以需要離線優化 那麼考慮優化,可以基於離線排序後優化。現將所有的點p按照( x + y )關鍵字排序,然後將菱形的四個點按照( x + y )排序。 那麼,每次如果p的(x+y)<= 菱形的(x+y),那麼將p的(y-x)離散化後的值插入到樹狀陣列 那麼查詢菱形中一點 t 下方有多少個點時,就是查詢小於等於t.y - t.x的點的個數,樹狀陣列查詢即可(必須離散化後查詢)。 所以時間複雜度就是o(nlgn)。

(實現也不那麼容易)

(佔位)

第11屆中南林業校賽 0和5

小c手中有n張牌,每張牌上有乙個一位數的數,這個數字不是0就是5。小c從這些牌在抽出任意張 不能抽0張 排成一行就組成了乙個數。使得這個數盡可能大,而且可以被90整除。注意 1.這個數沒有前導0,2.小c不需要使用所有的牌。每個測試資料輸入共2行。第一行給出乙個n,表示n張牌。1 n 1000 第二...

UESTC 第12屆 ACM 趣味賽一

略先假設沒有 知道這 n 個人中普通市民的人數一定不少於組織中的人 這個條件,我們考慮為什麼沒有辦法將任何人的身份識別出來。不妨這樣想 每乙個人只有兩種情況,要麼說謊話,要麼說真話,而所有說謊話的人和所有說真話的人給出的答案都會是一樣的。也就是說,我們只可能得到兩種答案,要麼是真實的情況,要麼是真實...

西南民族大學第十屆校賽(同步賽)E(模擬)

siry特別喜歡數學,在他很小的時候他就對數字特別感興趣,他喜歡念數字。具體唸法是這樣的 給你乙個數字,依次唸出每個數字有幾個相鄰 siry會大聲說出a個b,c個d.組合起來形成乙個新的數字。如 2331的唸法就是1個2,2個3,1個1,形成的新數字就是122311。再念一次就是1個1,2個2,1個...