COGS T 2739 凱倫和咖啡

2022-04-06 06:14:32 字數 1886 閱讀 8956

★★☆   輸入檔案:coffee.in輸出檔案:coffee.out簡單對比

時間限制:1 s   記憶體限制:512 mb

為了在上課時保持清醒,凱倫需要一些咖啡。咖啡愛好者凱倫想知道最佳的溫度來衝煮完美的咖啡。因此,她花了一些時間閱讀幾本食譜,其中包括廣受好評的「咖啡的藝術」。

她知道有n個食譜,其中第i個食譜建議應當在li和ri度之間衝煮以達到最佳的味道。凱倫認為如果至少k個食譜推薦某個溫度,那麼那個溫度是可以接受的。

凱倫的性格比較多變,因此她會問q個問題,對於每乙個問題,她會給出乙個溫度區間[a,b],你要告訴她有多少可接受的整數溫度在這個範圍內。

第一行輸入包含三個整數,n,k(1≤k≤n≤200000)和q(1≤q≤200000),如題中所描述。

接下來n行描述每乙個食譜,具體來說,其中的第i行包含兩個整數li和ri(1≤li≤ri≤200000),描述第i個食譜建議咖啡在li和ri度之間進行衝煮(包括端值)。

接下來q行為q個詢問。這些行中的每一行都包含a和b,(1≤a≤b≤200000),表示她想知道a和b度之間的可接受的整數溫度的數量,包括a和b。

對於每個詢問,一行輸出乙個答案。

3 2 4

91 94

92 97

97 99

92 94

93 97

95 96

90 10033

04 資料進行了更新,卡掉了部分暴力程式。

線段樹//分塊//(好像有線性作法呃呃呃)

1 #include 2

3const

int n(200000+5);4

intn,q,k;

5struct

tree

6tr[n<<2];9

#define lc (now<<1)

10#define rc (now<<1|1)

11#define mid (tr[now].l+tr[now].r>>1)

12void tree_build(int now,int l,int

r)13

21tree_build(lc,l,mid);

22 tree_build(rc,mid+1

,r);23}

24void tree_add(int now,int l,int

r)25

31if(r<=mid) tree_add(lc,l,r);

32else

if(l>mid) tree_add(rc,l,r);

33else tree_add(lc,l,mid),tree_add(rc,mid+1

,r);34}

35int tree_query(int now,int l,int

r)36

42void tree_push(int

now)

4350 tr[lc].sum+=tr[now].sum;

51 tr[rc].sum+=tr[now].sum;

52 tr[now].sum=0;53

tree_push(lc); tree_push(rc);

54 tr[now].sum=tr[lc].sum+tr[rc].sum;55}

5657 inline void read(int &x)

5863

64#define swap(a,b)

65int

ac()

6677 tree_push(1

);78

for(int l,r;q--;)

7984

return0;

85}8687

int hope=ac();

88int main()

COGS T 7 通訊線路

輸入檔案 mcst.in輸出檔案 mcst.out簡單對比 時間限制 1.5 s 記憶體限制 128 mb 問題描述 假設要在n個城市之間建立通訊聯絡網,則連通n個城市只需要n 1條線路。這時,如何在最少經費的前提下建立這個通訊網。在每兩個城市之間都可以設定 條線路,相應地都要付出一定的經濟代價。n...

27歲以後,27歲之前

27歲之前的人生就是一場充滿了變數冒險和童話故事的荒誕過程,經歷了各種悲慘,痛苦,不可思議的人和事。使得我終於在2013年的這個年頭裡明白了乙個道理 三十而立,誠不欺我。27歲之後的工作,花了2個月的時間揣摩學習頂著可能被炒魷魚的壓力應對著一件一件的事情,可幸27歲之前的人生給了我面對困難挫折壓力的...

COGS T 1578 次小生成樹初級練習題

輸入檔案 mst2.in輸出檔案 mst2.out簡單對比 時間限制 1 s 記憶體限制 256 mb 求嚴格次小生成樹 第一行包含兩個整數n 和m,表示無向圖的點數與邊數。接下來 m行,每行 3個數x y z 表示,點 x 和點y之間有一條邊,邊的權值為z。包含一行,僅乙個數,表示嚴格次小生成樹的...