bzoj 1112 磚塊 中位數 set

2021-07-07 05:33:03 字數 636 閱讀 7714

首先乙個結論是選定的k個高度一定是他們的中位數,證明見白書p6

然後我們可以列舉每個區間,用set維護區間中位數。

注意multiset的刪除操作是把所有這個值的都刪去。所以又用了乙個map

注意查詢時如果集合為空的處理

p黨是怎麼想的這道題?

#include

#include

#include

#include

#include

#include

#define md

#define ll long long

#define inf (int) 1e9

#define eps 1e-8

#define n 100010

using namespace std;

struct cmp

while (sz[1]first; del(x,2); ins(x,1);

}mid=mp[2].begin()->first; ans=min(ans,sz[1]*mid-sum[1]+sum[2]-mid*sz[2]);

}printf("%lld\n",ans);

return 0;

}

bzoj1112 樹狀陣列 磚塊Klo

description n柱磚,希望有連續k柱的高度是一樣的.你可以選擇以下兩個動作 1 從某柱磚的頂端拿一塊磚出來,丟掉不要了.2 從倉庫中拿出一塊磚,放到另一柱.倉庫無限大.現在希望用最小次數的動作完成任務.input 第一行給出n,k.1 k n 100000 下面n行,每行代表這柱磚的高度....

bzoj 5045 打磚塊 優先佇列

小q最近沉迷於一款新型 打磚塊 遊戲。在每局遊戲中,呈現在螢幕上的是一堵無限大小的牆壁。牆壁上鑲嵌著 無數長度為2 寬度為1的磚塊。牆壁被分成若干行,每行寬度都為1,相鄰兩個格仔形成乙個磚塊。相鄰兩行的磚 塊是間隔擺放的。牆壁從下往上行編號遞增,從左往右列編號遞增。如下圖所示 在遊戲的一開始,有n塊...

bzoj1047(單調佇列,矩陣中)

沒那麼難,不需要什麼二維單調佇列,其實只要改變一下順序就好 為了思路清晰,這裡採用的結構體 結構體函式寫的單調佇列 剛開始感覺不會,看hzwer的blog,上面說,題解都太麻煩,還不如手推,就沒繼續看下去,事實證明這道題回來一看就秒了,也不知道是怎麼想的。猜的?其實就是一行乙個單調佇列,端點每往右移...