codevs 4919 線段樹練習4

2022-04-30 03:51:08 字數 1621 閱讀 6927

題目描述 description

給你n個數,有兩種操作

1:給區間[a,b]內的所有數都增加x

2:詢問區間[a,b]能被7整除的個數

輸入描述 input description

第一行乙個正整數n,接下來n行n個整數,再接下來乙個正整數q,表示操作的個數. 接下來q行每行若干個整數。如果第乙個數是add,後接3個正整數a,b,x,表示在區間[a,b]內每個數增加x,如果是count,表示統計區間[a,b]能被7整除的個數

輸出描述 output description

對於每個詢問輸出一行乙個答案

樣例輸入 sample input

2 3 4

6count 1 3

count 1 2

add 1 3 2

count 1 3

add 1 3 3

count 1 3

樣例輸出 sample output

資料範圍及提示 data size & hint

10%:130%:1100%:1by 

//

每個節點用乙個陣列來維護 %7的 = 0 ,1 , 2 , 3 , 4 , 5 , 6 的個數

#include#include

#include

#include

#include

#include

using

namespace

std;

const

int n=100001

;int

n,x,y,z,ans,q;

int tmp[7

];string

s;struct

node

t[n*4

]; inline

intread()

void up(int

jd)void build(int jd,int l,int

r)

int mid=l+r>>1

; build(jd

<<1

,l,mid);

build(jd

<<1|1,mid+1

,r);

up(jd);

}void down(int

jd)void add(int

jd)

if(t[jd].f) down(jd);

int mid=t[jd].l+t[jd].r>>1

;

if(x<=mid) add(jd<<1

);

if(y>mid) add(jd<<1|1

); up(jd);

} void query(int

jd)

if(t[jd].f) down(jd);

int mid=t[jd].l+t[jd].r>>1

;

if(x<=mid) query(jd<<1

);

if(y>mid) query(jd<<1|1);}

intmain()

else

}return0;

}

Codevs 4919 線段樹練習4

4919 線段樹練習4 時間限制 1 s 空間限制 128000 kb 題目等級 gold 題目描述 description 給你n個數,有兩種操作 1 給區間 a,b 內的所有數都增加x 2 詢問區間 a,b 能被7整除的個數 輸入描述 input description 第一行乙個正整數n,接下...

codevs 4919 線段樹練習4

時間限制 1 s 空間限制 128000 kb 題目等級 gold 題目描述 description 給你n個數,有兩種操作 1 給區間 a,b 內的所有數都增加x 2 詢問區間 a,b 能被7整除的個數 輸入描述 input description 第一行乙個正整數n,接下來n行n個整數,再接下來...

codevs 線段樹練習4

題目描述 給你n個數,有兩種操作 1 給區間 a,b 內的所有數都增加x 2 詢問區間 a,b 能被7整除的個數 輸入描述 第一行乙個正整數n,接下來n行n個整數,再接下來乙個正整數q,表示操作的個數.接下來q行每行若干個整數。如果第乙個數是add,後接3個正整數a,b,x,表示在區間 a,b 內每...