void update(int rt,int l,int r,int p,int v){ //rt为节点下标(即编号),l,r为节点区间,p为需要修改处的下标 ,v为修改值
if(l==r){
sum[rt]+=v;
return;
}
int m=(l+r)>>1;
if(p<=m) //需要更新的节点在左子树区间
update(rt<<1,l,m,p,v);
else //需要更新的节点在右子树区间
update(rt<<1|1,m+1,r,p,v);
push_up(rt);
}
//query(1,1,n,x,y) 编号为1,区间1-n,查询区间为x-y
int query(int rt,int l,int r,int ll,int rr){ //rt为节点下标 (编号),l,r为节点区间,ll,,rr为查询区间
if(ll<=l&&r<=rr) // 如果当前节点的区域真包含于要查询的区间内,则返回节点信息不需要往下递归
return sum[rt]; //会有多个递归,我们只要每个递归的最终不可在分的节点的权值。
int res=0; //返回值变量,初始化视情况而定
int m=(l+r)>>1;
if(ll<=m) //如果左子树区间与查询区间有交集
res+=query(rt<<1,l,m,ll,rr);//查询区间不变
if(rr>m) //如果右子树区间与查询区间有交集,
//注意这里不是else if,因为查询区间可能同时和左右区间有交集
res+=query(rt<<1|1,m+1,r,ll,rr);
return res;
}
域名注册并不复杂,主要有以下三个大体步骤:
首先、域名前缀命名规则
不同类型的域名有不同的命名规则,比如中文域名需至少包含1个汉字,其余部分可包含英文字母;英文域名只能使用英文字母(a~z,不区分大小写)、数字(0~9)以及连接符(-);
其次、域名主体选取原则
用企业名称的汉语拼音作为域名;用企业名称相应的英文名作为域名;用企业名称的缩写作为域名;用汉语拼音的谐音形式给企业注册域名;以中英文结合的形式给企业注册域名;在企业名称前后加上与网络相关的前缀和后缀;用与企业名不同但有相关性的词或词组作域名;不要注册其他公司拥有的独特商标名和国际知名企业的商标名;
最后、域名申请
国内的域名注册商好坏难分,建议大家使用大平台,比如阿里云,服务品质有保障。这里尤其推荐阿里云域名注册平台。域名的注册、实名认证、备案、域名解析一条龙服务。
int add(int x,int y){ //单点修改(使原值增加y,而不是修改为y)
for(;x<=n;x+=lowbit(x))
a[x]+=y;
}
int sum(int y){ //求0到y的区间和
int ans=0;
for(;y>0;y-=lowbit(y))ans+=a[y];
return ans;