題目
本蒟蒻要開始學分塊了,區間查詢神器,區間修改單點查詢。
#includeusingnamespace
std;
const
int maxn = 50005
;const
int n = 305
;inline
intrd()
while(ch>='
0' && ch<='
9')
return x*f;
}int
n,a[maxn];
int bl[maxn]; //
標記屬於哪個塊
int l[n],r[n]; //
標記塊的邊界
int num; //
塊的個數
intin[n]; //
加法標記
int siz; //
塊的大小
inline
void
build()
for(register int i=1;i<=n;i++)
bl[i]=(i-1)/siz+1
; r[num]=n;
}inline
void update(int ql,int qr,int
w)
for(register int i=ql;i<=r[bl[ql]];i++)
a[i]+=w;
for(register int i=bl[ql]+1;i<=bl[qr]-1;i++)
in[i]+=w;
for(register int i=l[bl[qr]];i<=qr;i++)
a[i]+=w;
}inline
int query(int
qr)int
main()
return0;
}
分塊 分塊練習三題
分塊嘛 馮巨道德午餐講過的 唯一不同的是可能需要st n ed n 來記錄一下範圍 例教主的魔法 板 include using namespace std define in read int in const int n 1e6 5 int n,q,a n b n add n int siz,m...
分塊入門題
分塊入門題5 給 l,r 取開方,乙個數字最多被取開方6次,那麼乙個塊內有需要開方的時候才對這個塊取開方,那麼最多6 n sqrt n 次,分塊直接寫 includeusing namespace std typedef long long ll const int maxn 1e5 7 int l...
分塊模板題
題目描述 給出乙個長為n的數列,以及n個操作,操作涉及區間加法,單點查值。輸入格式 第一行輸入乙個數字 n 第二行輸入 n 個數字,第 i 個數字為a i 以空格隔開 接下來輸入 n 行詢問,每行輸入四個數字 opt,l,r,c,以空格隔開 若 opt 0,表示將 l,r 的之間的數都加 c 若 o...