codeforces 1353d 優先佇列

2021-10-06 09:46:40 字數 715 閱讀 3610

題意:給出乙個數n,即為乙個長度為n數值全為0的陣列,要求對他進行n次操作,每一次操作都選取由0組成的最長段,讓(f+l)/2變為操作的次數。(f是均為0的這段陣列的起始位置,l是終止位置)最後輸出這個長度為n的陣列。

思路:模擬每一次的操作給它賦值,最後輸出即可。那我們怎麼去模擬找到f和l呢?如果我們遍歷這個陣列去找肯定可以,但這樣就是o(n*n)。超時是毫無疑問的,模擬是不可避免的,那麼我們只能操作怎麼找到這個f和l,一次就能找到就可以了,那麼就有了優先佇列的思路,把所有的0段都存進去,直接處理第乙個即可。

注意:原先接觸優先佇列就乙個int,對於cmp等操作不了解。這裡定義乙個結構體比較可以,在原結構體重定義《也可以,但要注意比較的格式方法。//優先佇列與sort的排序方式是相反的,用同乙個cmp出來的結果恰恰相反//

#include

#include

#include

#include

using

namespace std;

struct duan};

struct cmp

if(a.len==b.len)}}

;int

main()

for(

int i=

1;i<=n;i++

)while

(!s.

empty()

)}}

Codeforces 703D 樹狀陣列

codeforces 703d 題意 給1e6長度的區間,每個單位代表乙個數。給1e6個詢問,每次問區間內出現次數為偶數次的數異或和。思路 賽中的時候想莫隊水過去,結果pretest都沒過233 正解是樹狀陣列。首先假設是奇數次的話,就是乙個簡單字首和。現在偶數次,有乙個處理技巧就是記錄這個區間出現...

codeforces 912D 期望計算

題目鏈結 題意 在乙個n m的魚塘裡面放置k條魚,每次可以選定乙個r r的矩陣並獲得矩陣內魚的數量的分數。請問該如何在魚塘裡面放置魚,使得最後的期望得分最大。思路 直接通過列舉放置魚的位置計算期望得分明顯非常非常不現實,於是我們換一種計算思路我們去計算各點放置魚之後可以得到的期望得分,然後取前k大的...

codeforces 523D 優先佇列

題意 給你n個任務單和k個機器,每個任務單有兩個變數開始的時間,完成所需要的時間,問你最優去做的話,每個訂單的結束時間是?題解 題目保證了資料是遞增排序的,那麼我們就不用sort了,直接做。然後這裡有個小套路 因為題目可以有k個機器,那我們可以先用k個0進去乙個優先佇列以達到模擬k個優先佇列的作用,...