1 数列分块入门_数列分块入门 1 LibreOJ - 6277

给出一个长为 nn 的数列,以及 nn 个操作,操作涉及区间加法,单点查值。

Input

第一行输入一个数字 nn。

第二行输入 nn 个数字,第 ii 个数字为 aiai,以空格隔开。

接下来输入 nn 行询问,每行输入四个数字 optopt、ll、rr、cc,以空格隔开。

若 opt=0opt=0,表示将位于 [l,r][l,r] 的之间的数字都加 cc。

若 opt=1opt=1,表示询问 arar 的值(ll 和 cc 忽略)。

Output

对于每次询问,输出一行一个数字表示答案。

Example

样例输入

4

1 2 2 3

0 1 3 1

1 0 1 0

0 1 2 2

1 0 2 0

样例输出

2

5

1 #include

2 #include

3 #include

4 #include

5 #include

6 #include

7 #include

8 #include

9 #include

10 #include

11 #include

12 #include

13 #include

14 #include

15 #include

16 #define ull unsigned long long

17 #define ll long long

18 #define pb push_back

19 #define rep(i,start,end) for(int i=start;i<=end;i++)

20 #define per(i,end,start) for(int i=end;i>=start;i--)

21 #define tle ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);

22 #define lc now<<1

23 #define rc now<<1|1

24 ll read()

25 {

26 ll x=0,f=1;char ch=getchar();

27 while(ch'9'){if(ch=='-')f=-1;ch=getchar();}

28 while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}

29 return x*f;

30 }

31 using namespace std;

32 const int mod = 1000000007 ; ///998244353;

33 const int mxn = 2e5 +7;

34 ll _,n,m,t,k,u,v,ans,cnt,ok,lim,len;

35 int a[mxn] ,inv[mxn],lazy[mxn],id[mxn];

36 void up(int l,int r,int c)

37 {

38 for(int i=l;i<=min(id[l]*len,1ll*r);i++) a[i]+=c;

39 if(id[l]!=id[r])

40 for(int i=(id[r]-1)*len+1;i<=r;i++)

41 a[i]+=c;

42 for(int i=id[l]+1;i<=id[r]-1;i++) lazy[i]+=c;

43 }

44 int main()

45 {

46 n = read() ;

47 len = sqrt(n);

48 for(int i=1;i<=n;i++) a[i] = read();

49 for(int i=1;i<=n;i++) id[i] = (i-1)/len + 1 ;

50 int l,r,c,op;

51 for(int i=1;i<=n;i++)

52 {

53 op = read() ; l = read() ; r=read();c=read();

54 if(!op) up(l,r,c);

55 else cout<

56 }

57 }

标签:6277,ch,LibreOJ,nn,分块,long,数字,include,define

来源: https://www.cnblogs.com/Shallow-dream/p/12852723.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值