bzoj3188 [Coci 2011]Upit(分块)
Description 你需要维护一个序列,支持以下4种操作。一,将区间(u,v)的数覆盖为C;二, 将区间(u,v)的数依次加上一个以C为首项、C为公差的等差数列;三,将数C插入 第i个位置;四,查询区间(u,v)的数的和。序列最初有n个数,一共会有Q次操 Sample Input 5 5 1 2 3 4 5 1 5 5 0 4 4 5 4 5 5 2 1 5 1 4 1 5 Sample Output 4 0 25 HINT 我非常喜欢分块,所以我用分块过了这题 支持插入,区间加,修改的分块,用vector数组维护打打标记就行了 如果某块过大,暴力拆成两块就好辣(数据挺水好像用不上) 代码中块和数列的编号均从0开始 #include<iostream> #include<cstdio> #include<vector> #include<cmath> #include<algorithm> #define ri register int using namespace std; typedef long long ll; ll read(){ char c=getchar(); ll x=0; bool f=1; while(c<'0'||c>'9') f=f&&(c!='-'),c=getchar(); while('0'<=c&&c<='9') x=x*10+c-48,c