<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Kinetic Tournament Tree (KTT) 維護區間加正數、求區間最大連續子段和

      #include<stdio.h>
      #include<algorithm>
      #include<utility>
      typedef long long ll;
      const int N=4e5+5;
      const ll inf=1e18;
      struct line{
      	ll k,b;
      	line(ll _k=0,ll _b=0):k(_k),b(_b){}
      	line operator + (const line &x) const{return line(k+x.k,b+x.b);}
      	void add(ll x){b+=k*x;}
      };
      auto max = [](line a,line b) -> std::pair<line,ll> {
      	if(a.k<b.k||(a.k==b.k&&a.b<b.b)) std::swap(a,b);
      	return a.b>=b.b? std::make_pair(a,inf):std::make_pair(b,(b.b-a.b)/(a.k-b.k));
      };
      struct ktt{
      	line sum,lmax,rmax,totmax;
      	ll x,lazy;
      	ktt(line _sum=line(),line _lmax=line(),line _rmax=line(),line _totmax=line(),ll _x=0,ll _lazy=0):sum(_sum),lmax(_lmax),rmax(_rmax),totmax(_totmax),x(_x),lazy(_lazy){}
      	ktt operator + (const ktt &a) const{
      		ktt res;
      		std::pair<line,ll> tmp;
      		res.x=std::min(x,a.x);
      		res.sum=sum+a.sum;
      		tmp=max(lmax,sum+a.lmax);
      		res.lmax=tmp.first;
      		res.x=std::min(res.x,tmp.second);
      		tmp=max(a.rmax,rmax+a.sum);
      		res.rmax=tmp.first;
      		res.x=std::min(res.x,tmp.second);
      		tmp=max(totmax,a.totmax);
      		res.x=std::min(res.x,tmp.second);
      		tmp=max(tmp.first,rmax+a.lmax);
      		res.totmax=tmp.first;
      		res.x=std::min(res.x,tmp.second);
      		return res;
      	}
      }s[N<<2];
      int n,m;
      ll a[N];
      auto pushup = [](int k) -> void {
      	ktt res=s[k<<1]+s[k<<1|1];
      	res.lazy=s[k].lazy;
      	s[k]=res;
      };
      auto addtag = [](int k,ll val) -> void {
      	s[k].lazy+=val;
      	s[k].sum.add(val);
      	s[k].lmax.add(val);
      	s[k].rmax.add(val);
      	s[k].totmax.add(val);
      	s[k].x-=val;
      };
      auto pushdown = [](int k) -> void {
      	if(s[k].lazy!=0){
      		addtag(k<<1,s[k].lazy);
      		addtag(k<<1|1,s[k].lazy);
      		s[k].lazy=0;
      	}
      };
      auto re = [](auto &&self,int k,ll val) -> void {
      	if(val>s[k].x){
      		val+=s[k].lazy,s[k].lazy=0;
      		self(self,k<<1,val),self(self,k<<1|1,val);
      		pushup(k);
      	}
      	else addtag(k,val);
      };
      auto build = [](auto &&self,int k,int l,int r) -> void {
      	if(l==r){s[k]=ktt(line(1,a[l]),line(1,a[l]),line(1,a[l]),line(1,a[l]),inf,0);return;}
      	int mid=l+(r-l>>1);
      	self(self,k<<1,l,mid),self(self,k<<1|1,mid+1,r);
      	pushup(k);	
      };
      auto change = [](auto &&self,int k,int l,int r,int x,int y,ll val) -> void {
      	if(x<=l&&r<=y){re(re,k,val);return;}
      	pushdown(k);
      	int mid=l+(r-l>>1);
      	if(y<=mid) self(self,k<<1,l,mid,x,y,val);
      	else if(x>mid) self(self,k<<1|1,mid+1,r,x,y,val);
      	else self(self,k<<1,l,mid,x,y,val),self(self,k<<1|1,mid+1,r,x,y,val);
      	pushup(k);
      };
      auto query = [](auto &&self,int k,int l,int r,int x,int y) -> ktt {
      	if(x<=l&&r<=y) return s[k];
      	pushdown(k);
      	int mid=l+(r-l>>1);
      	if(y<=mid) return self(self,k<<1,l,mid,x,y);
      	else if(x>mid) return self(self,k<<1|1,mid+1,r,x,y);
      	else return self(self,k<<1,l,mid,x,y)+self(self,k<<1|1,mid+1,r,x,y);
      };
      int main(){
      	scanf("%d%d",&n,&m);
      	for(int i=1;i<=n;i++) scanf("%lld",&a[i]);
      	build(build,1,1,n);
      	int opt,x,y;
      	ll z;
      	while(m--){
      		scanf("%d",&opt);
      		if(opt==1) scanf("%d%d%lld",&x,&y,&z),change(change,1,1,n,x,y,z);
      		else scanf("%d%d",&x,&y),printf("%lld\n",std::max(0ll,query(query,1,1,n,x,y).totmax.b));
      	}
      	return 0;
      }
      
      posted @ 2025-11-05 16:01  gevenfeng  閱讀(4)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国产精品午夜福利精品| 中文字幕国产在线精品| 人妻系列无码专区无码中出| 亚洲第一狼人天堂网伊人| 中国少妇人妻xxxxx| 日本熟妇XXXX潮喷视频| 国产成人精品免费视频app软件 | 蜜桃麻豆www久久囤产精品| 亚洲人妻精品中文字幕| av鲁丝一区鲁丝二区鲁丝三区| 无码精品一区二区免费AV| 久久精品国产精品亚洲艾| 公天天吃我奶躁我的在线观看| 偷偷做久久久久免费网站| 男女吃奶做爰猛烈紧视频| 最近中文字幕免费手机版| 精品人妻午夜福利一区二区| 亚洲综合伊人五月天中文| 亚洲精品日韩在线丰满| 国产果冻豆传媒麻婆精东 | 成人av一区二区亚洲精| 丁香五月婷激情综合第九色 | 亚洲国产精品成人av网| 亚洲色av天天天天天天| 亚洲一区久久蜜臀av| 欧美国产日韩在线三区| 亚洲精品男男一区二区| 久久精品国产99精品亚洲| 亚洲午夜亚洲精品国产成人| 二区三区国产在线观看| 日本新janpanese乱熟| 97色伦97色伦国产| 亚洲av日韩av一区久久| 午夜高清福利在线观看| 精品熟女亚洲av在线观看| 花莲市| 色综合 图片区 小说区| 国产精品线在线精品| 成人免费无码大片A毛片抽搐色欲 成人啪精品视频网站午夜 | 亚洲精品不卡av在线播放| 亚洲成在人线AV品善网好看|