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

P7706 「Wdsr-2.7」文文的摄影布置

P7706 「Wdsr-2.7」文文的摄影布置

题目背景

作为幻想乡知名的记者射命丸文,文文常常需要为文文新闻采集相关的照片素材。

具体而言,文文会采集一大串的图片,用于为新的一期报纸提供图片。作为一份简短的快报,文文会从素材库中使用三张图片,第一张放在开头,第三张放在结尾,用于激发读者的阅读兴趣(毕竟,报纸的开头和结尾是最容易被看到的);第二张,则是为了帮助读者理解相关内容。

可是作为无双风神,文文收集的照片实在是太多了,以至于一时半会儿处理不过来。按照惯例,文文找到了在一旁吃瓜的你,希望你能帮她解决困难。

题目描述

尽管图片非常多,但幸运的是,文文已经将它们排成了一列,从左到右分别编号为 \(1 \sim n\),文文选取的三张图片,应该是一个长度为 \(\bf 3\) 的子序列。(不妨设选取的照片的序号为 \(i,j,k\) ,则必须要有 \(i<j<k\) )。

此外,文文给每张照片定了一个吸引度 \(A_i\)大小 \(B_i\)

因为报纸版面太大会降低读者的兴趣,于是选定两张照片 \(i,k\) 后,规定必须选择最小的 \(B_j\)

形式化地说,规定 \(\psi(i,k) = A_i + A_k - \min(B_j)\),其中需要满足 \(i < j < k\)

摸清了照片价值的计算,文文会告诉你共 \(m\) 个操作,可以分为以下三种:

  • \(\colorbox{f0f0f0}{\verb!1 x y!}\) :照片的吸引度发生变化。文文要将 \(A_x\) 修改为 \(y\)

  • \(\colorbox{f0f0f0}{\verb!2 x y!}\) :照片的大小发生变化。文文要将 \(B_x\) 修改为 \(y\)

  • \(\colorbox{f0f0f0}{\verb!3 l r!}\) :文文打算利用素材库的第 \(l\) 到第 \(r\) 张中的图片,你要告诉她 \(\psi(x,y)\)最大值\(l\le x\le x+1<y \le r\) )。

输入格式

第一行两个整数 \(n,m\),分别表示照片数量和操作次数。

第二行 \(n\) 个整数,表示序列 \(A\),描述每张照片的吸引度。

第三行 \(n\) 个整数,表示序列 \(B\),描述每张照片的大小。

接下来 \(m\) 行,每行描述一个操作,格式如上所述。

输出格式

对于每个操作三,输出一行一个整数,表示答案。

输入输出样例 #1

输入 #1

6 6
1 4 2 3 5 6
5 3 4 1 6 7
3 2 5
3 1 6
1 2 3
3 1 6
2 6 1
3 1 6

输出 #1

8
9
8
8

说明/提示

数据范围及约定

\[\def\arraystretch{1.5} \begin{array}{|c|c|c|c|}\hline \textbf{Subtask} & \bm{n,m} & \textbf{特殊性质} & \textbf{分值}\cr\hline 1 & 1\le n,m\le 300 & \text{无} & 10\cr\hline 2 & 1\le n,m\le 5\times 10^3 & \text{无} & 20\cr\hline 3 & 1\le n,m\le 5\times 10^5 & \text{仅有操作 3} & 20\cr\hline 4 & 1\le n,m\le 10^5 & \text{无} & 20\cr\hline 5 & \text{无特殊限制} & \text{无} & 30\cr\hline \end{array} \]

  • 对于 \(100\%\) 的数据:

    \(1 \le n,m \le 5 \times 10^5\)

    \(1 \leq A_i,B_i,y \leq 10^8\)\(1 \le x \le n\)\(1 \le l \le r \le n\)

    保证 \(r-l+1 \geq 3\),即询问的区间长度大于等于 \(3\)

#include<bits/stdc++.h>
#define wk(x) write(x),putchar(' ')
#define wh(x) write(x),putchar('\n')
#define int long long
#define mod 998244353
#define L (p<<1)
#define R (L|1)
#define MID ((l+r)>>1)
#define N 500005using namespace std;
int n,m,k,jk,ans,sum,num,cnt,tot;
int head[N],dis[N],vis[N],wis[N],f[N];void read(int &x)
{x=0;int ff=1;char ty;ty=getchar();while(!(ty>='0'&&ty<='9')){if(ty=='-') ff=-1;ty=getchar();}while(ty>='0'&&ty<='9')x=(x<<3)+(x<<1)+ty-'0',ty=getchar();x*=ff;return;
}void write(int x)
{if(x==0){putchar('0');return;}if(x<0){x=-x;putchar('-');}char asd[201];int ip=0;while(x) asd[++ip]=x%10+'0',x/=10;for(int i=ip;i>=1;i--) putchar(asd[i]);return;
}struct TT{int sum,maxl,maxr,MAXA,MINB;TT(){sum=maxl=maxr=MAXA=MINB=-1e18;}void F(){sum=maxl=maxr=MAXA=MINB=-1e18;}
}T[N<<2],Y[N][3];struct P{	void push(int p){T[p].MINB=min(T[L].MINB,T[R].MINB);T[p].MAXA=max(T[L].MAXA,T[R].MAXA);T[p].maxl=max(T[L].maxl,T[R].maxl);T[p].maxl=max(T[p].maxl,T[L].MAXA-T[R].MINB);T[p].maxr=max(T[L].maxr,T[R].maxr);T[p].maxr=max(T[p].maxr,T[R].MAXA-T[L].MINB);T[p].sum=max(max(T[L].sum,T[R].sum),max(T[L].MAXA+T[R].maxr,T[R].MAXA+T[L].maxl));return;}void build(int p,int l,int r){if(l==r){T[p].MAXA=dis[l];T[p].MINB=vis[l];T[p].sum=T[p].maxl=T[p].maxr=-1e18;return;}build(L,l,MID);build(R,MID+1,r);push(p);}void Get(int p,int l,int r,int x){if(l==r){T[p].MAXA=dis[l];T[p].MINB=vis[l];T[p].sum=T[p].maxl=T[p].maxr=-1e18;return;}if(MID>=x) Get(L,l,MID,x);else Get(R,MID+1,r,x);push(p);}TT qry(int p,int l,int r,int x,int y){if(x<=l&&r<=y) return T[p];int X=++cnt;Y[X][1].F();Y[X][2].F();Y[X][3].F(); if(MID>=x) Y[X][1]=qry(L,l,MID,x,y);if(MID<y) Y[X][2]=qry(R,MID+1,r,x,y);if(Y[X][1].MINB==-1e18) return Y[X][2];if(Y[X][2].MINB==-1e18) return Y[X][1];Y[X][3].MINB=min(Y[X][1].MINB,Y[X][2].MINB);Y[X][3].MAXA=max(Y[X][1].MAXA,Y[X][2].MAXA);Y[X][3].maxl=max(Y[X][1].maxl,Y[X][2].maxl);Y[X][3].maxl=max(Y[X][3].maxl,Y[X][1].MAXA-Y[X][2].MINB);Y[X][3].maxr=max(Y[X][1].maxr,Y[X][2].maxr);Y[X][3].maxr=max(Y[X][3].maxr,Y[X][2].MAXA-Y[X][1].MINB);Y[X][3].sum=max(max(Y[X][1].sum,Y[X][2].sum),max(Y[X][1].MAXA+Y[X][2].maxr,Y[X][2].MAXA+Y[X][1].maxl));return Y[X][3];}
}G;signed main()
{
//	freopen(".in","r",stdin);
//	freopen(".out","w",stdout);read(n),read(m);for(int i=1;i<=n;i++) read(dis[i]);for(int i=1;i<=n;i++) read(vis[i]);G.build(1,1,n);while(m--){int x,y,op;read(op),read(x),read(y);if(op==1) dis[x]=y,G.Get(1,1,n,x);else if(op==2) vis[x]=y,G.Get(1,1,n,x);else cnt=0,wh(G.qry(1,1,n,x,y).sum);}return 0;
}
http://www.jsqmd.com/news/143816/

相关文章:

  • 2025年AI CRM系统前瞻:原圈科技智能线索分配机制解析
  • EasyGBS景区远程视频监控建设方案
  • 错过再等十年?Open-AutoGLM即将改变AI开发模式,你准备好了吗?
  • EasyGBS如何运用流媒体技术提升安防监控效率?
  • 成都优质实验学校深度盘点,学校/实验中学/名办高中/实验学校/中学/高中复读学校/高中实验学校公司推荐排行 - 品牌推荐师
  • 2025冲床机械手厂家/冲压机械手生产商口碑榜单 - 栗子测评
  • 2025年四季度总结:飞秒光频梳/光纤光频梳行业标杆企业,哪个品牌口碑好? - 品牌推荐大师1
  • 多维度智能分析与评估:业绩管理软件的核心应用技巧
  • 2025年上海实力强的猎头专业公司排行榜,新测评有名的猎头品牌企业推荐 - 工业推荐榜
  • 2025年团餐服务公司口碑排名:恩诺膳食的口味如何、团队实力怎样? - mypinpai
  • 2025恒温水浴服务商TOP5权威推荐:正规厂家甄选指南 - myqiye
  • Open-AutoGLM与macOS深度适配方案(仅限技术先锋的内部实践曝光)
  • 企业级教学辅助系统管理系统源码|SpringBoot+Vue+MyBatis架构+MySQL数据库【完整版】
  • 35岁+职业危机?月薪45K起的AI大模型新兴岗位,抓住机遇,逆袭职场!
  • 2025年上海GEO精准优化选哪家?GEO优化排名TOP5推荐, - 工业品牌热点
  • Open-AutoGLM网页怎么用才能最大化效能?答案就在这8个关键步骤
  • PaddlePaddle财经资讯自动播报系统
  • SpringBoot+Vue 教学资源共享平台平台完整项目源码+SQL脚本+接口文档【Java Web毕设】
  • PaddlePaddle财经资讯自动播报系统
  • 为什么你的手机跑不动Open-AutoGLM?深度剖析配置失败的5大原因
  • AbMole丨重组脯氨酰羧肽酶PRCP:代谢与心血管模型研究的重要工具
  • AcWing 3710:递进数字 ← 数位DP + 南京大学考研机试题
  • AcWing 3710:递进数字 ← 数位DP + 南京大学考研机试题
  • 2025有名的数字展厅策划设计施工品牌企业TOP5推荐 - 工业品牌热点
  • PaddleOCR太强了!基于PaddlePaddle镜像的高精度文本识别方案
  • Open-AutoGLM网页实战技巧,掌握这6个功能让你效率提升300%
  • 中文NLP处理神器:PaddlePaddle镜像全面支持BERT、ERNIE等模型
  • 2025年尘埃在线监测系统优质厂家推荐指南,在线式粒子计数器/尘埃粒子计数器在线监测系统/手持式尘埃粒子计数器尘埃在线监测系统厂家排名 - 品牌推荐师
  • 为什么顶尖AI工程师都在关注智谱Open-AutoGLM电脑?真相令人震惊
  • 2025AI营销服务商TOP5权威推荐:中鼓数据企业价值观如何、实力怎么样? - 工业品牌热点