程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> hihocoder#1078 線段樹的區間修改

hihocoder#1078 線段樹的區間修改

編輯:C++入門知識

hihocoder#1078 線段樹的區間修改


“`

include

include

using namespace std;

define LL long long

const int maxn = 1000005;
struct lin{
LL s[maxn<<1];
LL m[maxn<<1];
void init(int l,int r,int k){
if(l == r){
m[k] = 0;
scanf(“%d”,&s[k]);
return ;
}
int m = (l+r) >>1;
init(l,m,k<<1);
init(m+1,r,k<<1|1);
s[k] = s[k<<1]+s[k<<1|1];
}
void push_down(int k,int len){
if(m[k]){
m[k<<1] = m[k<<1|1] = m[k];
s[k<<1] = (len-(len>>1))*m[k];
s[k<<1|1] = (len>>1)*m[k];
m[k] = 0;
}
}
int query(int q,int p,int k,int x,int y){
if(x <= q && p <= y) return s[k];
if(p < x || q > y ) return 0;
push_down(k,p-q+1);
int res=0;
int m = (p+q)>>1;
if(x<=m) res += query(q,m,k<<1,x,y);
if(m

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved