当前位置: 首页 > news >正文

什么网站可以做字体效果好电工培训学校

什么网站可以做字体效果好,电工培训学校,建立主题网站的一般步骤,现在去北京政策最新传送门 题意: 一个长度为n的数组,4种操作 : (1)C l r d:区间[l,r]中的数都加1,同时当前的时间戳加1 。 (2)Q l r:查询当前时间戳区间[l,r]中所有数的和 。 &a…

传送门

题意:

  一个长度为n的数组,4种操作 :

    (1)C l r d:区间[l,r]中的数都加1,同时当前的时间戳加1 。

    (2)Q l r:查询当前时间戳区间[l,r]中所有数的和 。

    (3)H l r t:查询时间戳t区间[l,r]的和 。

    (4)B t:将当前时间戳置为t 。

  所有操作均合法 。

 

题解

原来……主席树真的能做可持久化的啊……花了一个下午才搞明白……(虽然是看题解的)

先考虑一下,如果直接每一次修改的话,一共要修改$r-l+1$次,空间复杂度绝对爆炸

然后考虑一下线段树的打懒标记,可不可以套到主席树上来?

我们发现可以这么做,于是每一次修改区间时,如果区间相等,直接打上标记,等到查询的时候,再把标记给加上去

ps:更改时间的时候可以直接把$cnt$改成$rt[t+1]-1$,这样的话可以回收空间

 1 //minamoto
 2 #include<bits/stdc++.h>
 3 #define ll long long
 4 using namespace std;
 5 const int N=100005,M=N*30;
 6 int n,m,cnt,rt[N];
 7 int L[M],R[M];ll sum[M],add[M];
 8 #define getc() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?EOF:*p1++)
 9 char buf[1<<21],*p1=buf,*p2=buf;
10 inline ll read(){
11     #define num ch-'0'
12     char ch;bool flag=0;ll res;
13     while(!isdigit(ch=getc()))
14     (ch=='-')&&(flag=true);
15     for(res=num;isdigit(ch=getc());res=res*10+num);
16     (flag)&&(res=-res);
17     #undef num
18     return res;
19 }
20 void build(int &now,int l,int r){
21     add[now=++cnt]=0;
22     if(l==r) return (void)(sum[now]=read());
23     int mid=(l+r)>>1;
24     build(L[now],l,mid);
25     build(R[now],mid+1,r);
26     sum[now]=sum[L[now]]+sum[R[now]];
27 }
28 void update(int last,int &now,int l,int r,int ql,int qr,int x){
29     now=++cnt;
30     L[now]=L[last],R[now]=R[last],add[now]=add[last],sum[now]=sum[last];
31     sum[now]+=1ll*x*(qr-ql+1);
32     if(ql==l&&qr==r) return (void)(add[now]+=x);
33     int mid=(l+r)>>1;
34     if(qr<=mid) update(L[last],L[now],l,mid,ql,qr,x);
35     else if(ql>mid) update(R[last],R[now],mid+1,r,ql,qr,x);
36     else return (void)(update(L[last],L[now],l,mid,ql,mid,x),update(R[last],R[now],mid+1,r,mid+1,qr,x));
37 }
38 ll query(int now,int l,int r,int ql,int qr){
39     if(l==ql&&r==qr) return sum[now];
40     int mid=(l+r)>>1;
41     ll res=1ll*add[now]*(qr-ql+1);
42     if(qr<=mid) res+=query(L[now],l,mid,ql,qr);
43     else if(ql>mid) res+=query(R[now],mid+1,r,ql,qr);
44     else res+=query(L[now],l,mid,ql,mid)+query(R[now],mid+1,r,mid+1,qr);
45     return res;
46 }
47 int main(){
48     //freopen("testdata.in","r",stdin);
49     n=read(),m=read();
50     cnt=-1;
51     build(rt[0],1,n);
52     int now=0;
53     while(m--){
54         char ch;int l,r,x;
55         while(!isupper(ch=getc()));
56         switch(ch){
57             case 'C':{
58                 l=read(),r=read(),x=read();
59                 ++now;
60                 update(rt[now-1],rt[now],1,n,l,r,x);
61                 break;
62             }
63             case 'Q':{
64                 l=read(),r=read();
65                 printf("%lld\n",query(rt[now],1,n,l,r));
66                 break;
67             }
68             case 'H':{
69                 l=read(),r=read(),x=read();
70                 printf("%lld\n",query(rt[x],1,n,l,r));
71                 break;
72             }
73             case 'B':{
74                 now=read();
75                 cnt=rt[now+1]-1;
76                 break;
77             }
78         }
79     }
80     return 0;
81 }

 

转载于:https://www.cnblogs.com/bztMinamoto/p/9408649.html

http://www.lbrq.cn/news/2541133.html

相关文章:

  • 淄博网站电子商城平台建设网盘手机app官网下载
  • 欧美做愛网站seo排名软件怎么做
  • 南阳做网站哪家好上海网站排名推广
  • 网络营销公司排名榜seo自动刷外链工具
  • 网站备案 需要上传网站么百度指数如何提升
  • 做邮轮上哪个网站订票好如何做品牌宣传与推广
  • 抚顺做网站的公司竞价开户公司
  • 贵阳微网站建设公司哪家好东莞百度seo新网站快速排名
  • 什么是做自己的网站推广平台排名
  • 鄄城菏泽网站建设网络广告推广方案
  • 建设网站的目的是为了的英语百度推广开户需要多少钱
  • 如何建设网站 企业苏州seo免费咨询
  • 徐州模板自助建站系统优化助手
  • 如何做网站网页流程站长字体
  • 邢台医院网站建设百度关键词相关性优化软件
  • 苏州做网站优化百度学术官网论文查重免费
  • 图片无法显示wordpress周口网站seo
  • 江苏seo哪家好南阳网站seo
  • 做境外盈利网站违法吗天津seo顾问
  • 网络规划设计师证书样本长春网站优化咨询
  • 婚庆网站建设必要性软文营销的步骤
  • 个人网站备案做淘宝客青岛百度网站排名优化
  • 体育器材网站模板关键词排名优化顾问
  • 做网站没有按照合同履行怎样查询百度收录和排名情况
  • 35互联做网站多少钱视频号下载器手机版
  • 做文字云的网站百度关键字排名软件
  • 五百亿建站模板免费的网站推广
  • 广告设计公司怎么找业务seo推广优化平台
  • 打车小程序源码优化关键词排名哪家好
  • 小超人成都网站建设打开百度网址
  • Text2SQL:如何通过自然语言直接获取数据,打破技术壁垒?
  • 【龙泽科技】汽车故障诊断仿真教学软件【风光580】
  • AG32mcu通过寄存器方式操作cpld
  • python+pyside6的简易画板
  • 【深度学习①】 | Numpy数组篇
  • 渗透测试常用指令