bzoj
洛谷考慮對操作離線後分塊處理詢問操作(莫隊演算法),將詢問操作按照編號分塊後左端點第一關鍵字,右端點第二關鍵字排序(分塊大小為$n^$),對於每乙個詢問操作,記下當前最後乙個修改操作。
之後就是莫隊的板子了。
#include #include #include #include #include using std::min; using std::max;
using std::swap; using std::sort;
typedef long long ll;
using std::set;
templatevoid read(t &x)
while(ch >= '0' && ch <= '9') x = x * 10 + ch - '0', ch = getchar(); x *= flag;
}const int n = 2e6 + 10, m = 5e4 + 10;
int n, m, siz, col[m], l, r, tot[n], ans[m], ret, now, bel[m];
struct ques q[m]; int cntqu;
struct modi o[m]; int cntmo;
inline bool cmp (const ques &a, const ques &b)
inline void del (int c)
inline void add (int c)
inline void doit (int now, int k)
int main () else read(o[++cntmo].pos), read(o[cntmo].val);
}sort(&q[1], &q[cntqu + 1], cmp), l = 1;
for(int i = 1; i <= cntqu; ++i)
for(int i = 1; i <= cntqu; ++i)
printf("%d\n", ans[i]);
return 0;
}
洛谷 P1903 數顏色 分塊 bitset
題目鏈結 給你乙個數列代表不同的顏色 可以修改 詢問一段區間內有多少種顏色。很容易想到的就是線段樹來維護bitset。這裡為了練習,使用分塊維護bitset。事實上線段樹可以看成是無限分塊。修改的時候直接暴力將被修改位置所在的塊重新計算,形成新的bitset。查詢的時候,直接按塊合併bitset即可...
洛谷 P2120 ZJOI2007 倉庫建設
題幹重點 第i個工廠目前已有成品ai件,在第i個工廠位置建立倉庫的費用是bi。對於沒有建立倉庫的工廠,其產品應被運往其他的倉庫進行儲藏 只能運往編號更大的工廠的倉庫,一件產品運送1個單位距離的費用是1 告訴你工廠的位置,在每乙個工廠建立倉庫的費用,以及它們原有產品的個數,產品只能往編號高的地方運,求...
BZOJ2753 洛谷P2753滑雪
中文題意不再贅述 說一下做題思路,題目大意是求乙個最小生成樹,題目規定只能滑向小於等於的點,那麼說明圖中存在雙向邊和單向邊,輸入的時候要判斷兩個點的高度 然後由題意我們知道,我們必須由1號點出發,那麼我們必定有一些點去不了,那麼這些點會干擾我們做題,尤其是干擾最小生成樹,那麼我們可以從1號點開始擴充...