BNUOJ 53081 线段树区间合并
题目:
http://www.bnuoj.com/bnuoj/problem_show.php?pid=53081
思路:
将‘(’看作1,‘)’看作-1,每次询问:从x开始所有前缀的前缀和均非负,且和为0的最长前缀。
维护线段树节点代表区间的最小前缀和,每次询问处理方式为:
若当前区间[x,i]合并当前节点后最小前缀和非负,则合并,否则不合并且终止查询。
输出合并后的区间内最小前缀对应的长度即可。
#include<bits/stdc++.h>
using namespace std;
const int N=500005;
struct line
{
int len,mi,id,sum;
line operator+(const line &l)const
{
line tmp=*this;
tmp.len+=l.len;
if (sum+l.mi<=tmp.mi)
tmp.mi=sum+l.mi,tmp.id=l.id;
tmp.sum+=l.sum;
return tmp;
}
}a[N*4];
char s[N];
void build(int i,int l,int r)
{
if (l==r)
{
if (s[l]=='(') a[i]={1,1,l,1};
else a[i]={1,-1,l,-1};
return;
}
int mid=(l+r)/2;
build(i*2,l,mid);
build(i*2+1,mid+1,r);
a[i]=a[i*2]+a[i*2+1];
}
void cg(int i,int l,int r,int x)
{
if (l==r)
{
if (s[l]=='(') a[i]={1,1,l,1};
else a[i]={1,-1,l,-1};
return;
}
int mid=(l+r)/2;
if (x<=mid) cg(i*2,l,mid,x);
else cg(i*2+1,mid+1,r,x);
a[i]=a[i*2]+a[i*2+1];
}
line L;
bool get(int i,int l,int r,int x)
{
if (x<=l)
{
if ((L+a[i]).mi>=0)
{
L=L+a[i];
return 1;
}
else
{
if (l==r) return 0;
int mid=(l+r)/2;
if (get(i*2,l,mid,x))
get(i*2+1,mid+1,r,x);
return 0;
}
}
int mid=(l+r)/2;
if (x<=mid)
{
if (get(i*2,l,mid,x)&&get(i*2+1,mid+1,r,x)) return 1;
return 0;
}
if (get(i*2+1,mid+1,r,x)) return 1;
return 0;
}
int main()
{
int t; scanf("%d",&t);
while(t--)
{
int n,q; scanf("%d%d",&n,&q);
scanf("%s",s+1);
build(1,1,n);
while(q--)
{
int tp,x; scanf("%d%d",&tp,&x);
if (tp==1)
{
s[x]='('+')'-s[x];
cg(1,1,n,x);
}
else
{
L={0,0,x-1,0};
get(1,1,n,x);
printf("%d\n",L.id-x+1);
}
}
}
}
2022年9月28日 19:24
Biology is the study of the life of flora and fauna. Biology talks about organisms and how they react to certain toxins when you mix things up. Biology has a long history which showed impacted people in negative and positive ways. Biology is the study of the life of flora and fauna. NCERT Biology Question Paper Class 9 Biology talks about organisms and how they react to certain toxins when you mix things up. Biology has a long history which showed impacted people in negative and positive ways.Biology is one of the interesting studies with practical experiments which helps the students in understanding better way.
2023年4月23日 00:34
crediblebh
2025年6月30日 03:53 The passion of yours for this shines through in each word you write. It is inspiring to see someone very committed to their craft.
my web page