AT_abc343_f的题解
(一)
F<E。
显然是线段树,虽然分块也能过。
每个线段树上的节点记录最大值,第二大值,最大值个数,第二大值个数。
合并操作注意值相等的情况。
(二)
AC 代码。
赛事写得有点乱。
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,q,a[400010];
struct node{
int fival,fisum,seval,sesum;
}tree[1000010];
node merge(node x,node y){
node t;
t.fival=max(x.fival,y.fival);
if(x.fival==y.fival){
t.fisum=x.fisum+y.fisum;
if(x.seval>y.seval)t.seval=x.seval,t.sesum=x.sesum;
else if(x.seval==y.seval)t.seval=x.seval,t.sesum=x.sesum+y.sesum;
else t.seval=y.seval,t.sesum=y.sesum;
}
else if(x.fival>y.fival){
t.fisum=x.fisum;
if(x.seval>y.fival)t.seval=x.seval,t.sesum=x.sesum;
else if(x.seval==y.fival)t.seval=x.seval,t.sesum=x.sesum+y.fisum;
else t.seval=y.fival,t.sesum=y.fisum;
}
else{
t.fisum=y.fisum;
if(y.seval>x.fival)t.seval=y.seval,t.sesum=y.sesum;
else if(y.seval==x.fival)t.seval=y.seval,t.sesum=y.sesum+x.fisum;
else t.seval=x.fival,t.sesum=x.fisum;
}
return t;
}
void build(int o,int l,int r){
if(l==r){
tree[o]=(node){a[l],1ll,-1ll,0};
return;
}
int mid=(l+r)>>1;
build(o*2,l,mid);
build(o*2+1,mid+1,r);
tree[o]=merge(tree[o*2],tree[o*2+1]);
}
void update(int o,int l,int r,int pos,int val){
if(l==r){
tree[o]=(node){val,1ll,-1ll,0};
return;
}
int mid=(l+r)>>1;
if(pos<=mid)update(o*2,l,mid,pos,val);
else update(o*2+1,mid+1,r,pos,val);
tree[o]=merge(tree[o*2],tree[o*2+1]);
}
node query(int o,int l,int r,int L,int R){
if(L<=l&&r<=R)return tree[o];
node t={-1ll,0ll,-2ll,0ll};
int mid=(l+r)>>1ll;
if(L<=mid)t=merge(t,query(o*2,l,mid,L,R));
if(R>mid)t=merge(t,query(o*2+1ll,mid+1ll,r,L,R));
return t;
}
signed main(){
scanf("%lld%lld",&n,&q);
for(int i=1;i<=n;i++)scanf("%lld",&a[i]);
build(1,1,n);
while(q--){
int op,x,y;
scanf("%lld%lld%lld",&op,&x,&y);
if(op==1){
update(1,1,n,x,y);
}
else{
printf("%lld\n",query(1,1,n,x,y).sesum);
}
}
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下