數列分塊入門7 區間標記下放

2021-09-08 13:59:58 字數 619 閱讀 2610

原題:

題解:本題大意:區間加法,乘法,單點查詢,設sum為塊的加法標記,mul為乘法標記。通過分析有

#include#define reg register 

#define ll long long

const int n=110000,mm=550,m=10007;

using namespace std;

int mul[mm],sum[mm],a[n],pos[n],n,m;

inline int rd()

inline void pushdown(int x)

inline void add(int l,int r,int c)

for(reg int i=pos[l]+1;i<=pos[r]-1;i++) sum[i]=(sum[i]+c)%m;

}inline void change(int l,int r,int c)

for(reg int i=pos[l]+1;i<=pos[r]-1;i++) mul[i]=1ll*mul[i]*c%m,sum[i]=1ll*sum[i]*c%m;

}int main()

return 0;

}

數列分塊入門9 區間眾數

原題 題解 基本題意求 l,r 的最小眾數,對於集合 a,b 顯然 mode a and b 屬於 mode a and b。這樣就可以分塊,預處理f i j 表示i j的眾數。每次查詢時暴力查詢頭尾兩塊的數和中間塊的眾數就可以,關於查詢x在 l,r 出現了幾次,用動態陣列存放x的下標,二分查詢就好...

loj 數列分塊入門 6 9 區間眾數

給出乙個長為 n 的數列,以及 n 個操作,操作涉及單點插入,單點詢問,資料隨機生成。參考 每個塊內用乙個 vector 維護,每次插入時先找到位置所在的塊,再暴力插入。如果資料不隨機,即如果先在乙個塊有大量單點插入,這個塊的大小會大大超過 sqrt n 那塊內的暴力就沒有複雜度保證了。為此引入乙個...

LOJ 6285 數列分塊入門 9 區間眾數

如果只查詢眾數的個數,完全可以莫隊,加數時容易維護眾數的數量,刪除數時,眾數的數量要麼減1,要麼不變,只需再開乙個標記陣列維護眾數的數量即可 根據陳立傑 區間眾數解題報告 實現了下面兩種解法 解法一 塊數分成sqrt n 超時了,150可以過 分塊真毒瘤 pragma gcc optimize 2 ...