QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#586166 | #9263. Rebellious Sequences | ucup-team3474 | TL | 3984ms | 35944kb | C++20 | 3.9kb | 2024-09-24 08:02:23 | 2024-09-24 08:02:23 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
const int N=1919810;
typedef long long ll;
typedef pair<ll,ll> PII;
ll n,m,k;
ll a[N],b[N];
char s[N];
int val[N];
vector<char> e[N];
int ss[N];
typedef struct{
int l,r;
int cnt0,cnt1;
int mn;
int tag;
}Node;
Node tr[N];
void pushup(int u){
tr[u].cnt0=tr[u<<1].cnt0+tr[u<<1|1].cnt0;
tr[u].cnt1=tr[u<<1].cnt1+tr[u<<1|1].cnt1;
tr[u].mn=min(tr[u<<1].mn,tr[u<<1|1].mn);
}
void pushdown(int u){
if(tr[u].tag){
tr[u<<1].mn+=tr[u].tag,tr[u<<1].tag+=tr[u].tag;
tr[u<<1|1].mn+=tr[u].tag,tr[u<<1|1].tag+=tr[u].tag;
tr[u].tag=0;
}
}
void build(int u,int l,int r){
tr[u].l=l,tr[u].r=r;
if(l==r){
if(s[l]=='(') tr[u].cnt0=1;
else tr[u].cnt1=1;
tr[u].mn=ss[l];
}else{
int mid=l+r>>1;
build(u<<1,l,mid);
build(u<<1|1,mid+1,r);
pushup(u);
}
}
void modify(int u,int l,int r,int type,int c){
// cout<<u<<endl;
if(l>r) return;
if(tr[u].l>=l&&tr[u].r<=r){
if(type==0){
tr[u].cnt0^=1;
tr[u].cnt1^=1;
}else{
tr[u].mn+=c;
tr[u].tag+=c;
}
}else{
int mid=tr[u].l+tr[u].r>>1;
pushdown(u);
if(l<=mid) modify(u<<1,l,r,type,c);
if(r>mid) modify(u<<1|1,l,r,type,c);
pushup(u);
}
}
Node merge(Node a,Node b){
a.cnt0+=b.cnt0;
a.cnt1+=b.cnt1;
a.mn=min(a.mn,b.mn);
// cout<<a.cnt0<<" "<<b.cnt0<<" "<<a.cnt1<<" "<<b.cnt1<<" "<<a.mn<<" "<<b.mn<<endl;
return a;
}
Node query(int u,int l,int r){
// cout<<"-"<<u<<" "<<l<<" "<<r<<endl;
if(tr[u].l>=l&&tr[u].r<=r){
// cout<<tr[u].cnt0<<endl;
return tr[u];
}else{
int mid=tr[u].l+tr[u].r>>1;
pushdown(u);
Node nd={0,0,0,0,1000000000,0};
if(l<=mid) nd=merge(nd,query(u<<1,l,r));
if(r>mid) nd=merge(nd,query(u<<1|1,l,r));
pushup(u);
// cout<<"--"<<nd.cnt0<<" "<<nd.cnt1<<" "<<nd.mn<<endl;
return nd;
}
}
bool check(){
int le,ri;
int l=1,r=n;
while(l<r){
int mid=l+r>>1;
if(query(1,1,mid).cnt1==0) l=mid+1;
else r=mid;
}
le=l+1;
l=le,r=n;
while(l<r){
int mid=l+r>>1;
if(query(1,le,mid).cnt0==0) l=mid+1;
else r=mid;
}
le=l;
l=1,r=n;
while(l<r){
int mid=l+r+1>>1;
if(query(1,mid,n).cnt0==0) r=mid-1;
else l=mid;
}
ri=l-1;
l=1,r=ri;
// cout<<ri<<endl;
while(l<r){
int mid=l+r+1>>1;
if(query(1,mid,ri).cnt1==0) r=mid-1;
else l=mid;
}
ri=l;
// cout<<le<<" "<<ri<<endl;
if(le+1>ri-1) return false;
else{
Node nd=query(1,le+1,ri-1);
int num1=query(1,le,le).mn,num2=query(1,ri,ri).mn;
if(nd.cnt1>=num1&&nd.cnt0>=num2) return true;
return false;
}
}
void __(){
cin>>n>>m;
scanf("%s",s+1);
for(int i=1;i<=n;i++){
if(s[i]=='(') ss[i]=1;
else ss[i]=-1;
ss[i]+=ss[i-1];
}
build(1,1,n);
// for(int i=1;i<=n;i++){
// cout<<query(1,i,i).cnt0<<" "<<query(1,i,i).cnt1<<" "<<query(1,i,i).mn<<endl;
// }
// cout<<114514<<endl;
while(m--){
int l,r;
scanf("%d%d",&l,&r);
if(s[l]!=s[r]){
modify(1,l,l,0,0);
modify(1,r,r,0,0);
if(s[l]=='(') modify(1,l,r-1,1,-2);
else modify(1,l,r-1,1,2);
}
swap(s[l],s[r]);
// for(int i=1;i<=n;i++){
// cout<<query(1,i,i).cnt0<<" "<<query(1,i,i).cnt1<<" "<<query(1,i,i).mn<<endl;
// }
// printf("%s\n",s+1);
if(!check()) puts("No");
else puts("Yes");
}
}
int main(){
int _=1;
// cin>>_;
while(_--){
__();
}
}
詳細信息
Test #1:
score: 100
Accepted
time: 2ms
memory: 5672kb
input:
8 4 (()()()) 3 4 5 6 2 7 6 7
output:
No No Yes No
result:
ok 4 token(s): yes count is 1, no count is 3
Test #2:
score: 0
Accepted
time: 2ms
memory: 5728kb
input:
6 6 ((())) 2 4 2 4 2 5 4 5 4 5 2 3
output:
No No No No No No
result:
ok 6 token(s): yes count is 0, no count is 6
Test #3:
score: 0
Accepted
time: 2ms
memory: 5848kb
input:
10 10 ((())(())) 7 9 2 4 5 6 8 9 2 8 5 9 2 5 2 3 3 9 3 8
output:
No Yes Yes Yes No No Yes Yes No No
result:
ok 10 token(s): yes count is 5, no count is 5
Test #4:
score: 0
Accepted
time: 2ms
memory: 5824kb
input:
10 100 ((()(()))) 5 7 5 6 2 4 2 7 2 9 2 4 2 6 8 9 7 8 2 5 5 6 7 9 3 4 5 6 3 6 3 6 8 9 5 8 6 7 6 7 3 4 5 9 6 7 5 7 2 6 2 6 3 7 3 7 3 4 3 4 2 4 7 9 4 8 4 5 5 8 7 9 5 7 5 9 7 9 2 3 5 6 7 9 4 5 3 6 5 6 7 8 5 6 4 5 8 9 2 6 5 6 2 9 3 8 3 8 4 8 5 7 3 5 4 7 7 8 4 9 6 9 6 9 3 5 4 7 8 9 4 7 6 7 5 6 5 6 2 4 6 ...
output:
No No No No Yes No Yes Yes No No No No Yes Yes No Yes No No No No No No No No Yes No Yes No Yes No Yes No Yes Yes No Yes Yes No Yes Yes Yes No No No No No No No No Yes Yes No No No No No No No No Yes No Yes No No No No No No No Yes Yes Yes No Yes Yes No Yes Yes Yes Yes Yes Yes No No No Yes Yes No No...
result:
ok 100 token(s): yes count is 38, no count is 62
Test #5:
score: 0
Accepted
time: 3ms
memory: 5804kb
input:
10 1000 (()()(())) 7 9 8 9 6 7 3 8 4 8 2 4 2 4 5 7 8 9 7 9 3 4 3 7 2 7 4 9 2 5 3 5 2 3 6 9 7 9 7 9 4 5 2 6 6 7 2 9 5 6 2 5 6 9 6 7 3 9 3 4 6 9 6 9 5 7 6 9 2 4 2 6 5 8 8 9 4 7 2 4 6 7 2 6 4 6 3 4 3 6 2 5 4 6 4 5 2 3 4 5 8 9 8 9 2 3 2 6 2 7 4 7 6 9 6 8 4 7 4 5 2 3 5 7 7 8 4 6 4 6 7 8 5 7 4 5 3 5 3 4 6...
output:
Yes No No No No Yes No No No No No No No Yes No Yes Yes No Yes No No No No Yes Yes No No No Yes No No No No No No No No No No Yes Yes No No Yes No Yes Yes Yes Yes Yes No Yes Yes No Yes Yes No Yes Yes Yes No No No No No No No No No No No No No No No No No No Yes No No No No No No No No No Yes No No Y...
result:
ok 1000 token(s): yes count is 354, no count is 646
Test #6:
score: 0
Accepted
time: 2ms
memory: 5776kb
input:
50 50 ((()(()((((((((()(())())(()(()()())))()()))))))))) 11 34 31 47 13 48 25 30 8 20 24 29 19 44 7 38 18 37 13 15 14 18 27 37 6 25 45 47 31 48 9 43 30 42 36 42 36 42 30 44 43 48 21 24 21 43 3 4 8 45 43 45 5 47 17 45 22 38 29 48 15 29 5 38 29 30 16 46 21 33 8 14 17 36 20 35 32 46 21 23 3 32 10 38 31...
output:
Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes
result:
ok 50 token(s): yes count is 50, no count is 0
Test #7:
score: 0
Accepted
time: 4ms
memory: 5876kb
input:
100 1000 ((()()(((())())(())())(()()))(()(()((()()(())((()(()()(((())((((())))()))(()))))(()))))())(()()()))) 33 98 12 82 10 14 50 69 49 98 17 77 8 25 10 14 33 88 18 23 21 77 78 96 17 26 34 88 19 62 56 90 65 79 7 83 27 75 24 87 4 47 11 36 11 72 27 65 6 16 43 95 39 61 47 53 42 61 55 59 50 70 44 72 35...
output:
Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes ...
result:
ok 1000 token(s): yes count is 1000, no count is 0
Test #8:
score: 0
Accepted
time: 88ms
memory: 5928kb
input:
2000 20000 (((((()))(((((()()))()()((())()(()()()()()((((())()(()()((((())((()()(())((((((())))(()())))))()(()())(()(())(((())((()))(()))((()())))()(())((())(())((()()()(()))((()()((())((()))))(())((()(()()())))))()(((()(((())))((()))(()()()(((((()()((()))())))())))))())((())))))((())(()()()()))((((...
output:
Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes ...
result:
ok 20000 token(s): yes count is 20000, no count is 0
Test #9:
score: 0
Accepted
time: 315ms
memory: 6688kb
input:
10000 50000 ((()))()(()(()())((()))(())())(())()(((()())()()()()()))(((()()()()))((((()))))(()()())())(())((((())())(((((((()(())())))))())()))(((()()((())))())((()))()(((())((())))())))(()((((((()())()())(())(()(()(((((()((()))(()))))()()((()))((()(())(()(()())((((()())()(())(((((((((()((()((())())...
output:
Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes ...
result:
ok 50000 token(s): yes count is 50000, no count is 0
Test #10:
score: 0
Accepted
time: 901ms
memory: 9880kb
input:
50000 100000 ((()((()()((((((()))())()(()((()((((((()))()())(()(())(()((())((((()))((()()))))(()())())))()()()())((()())))(()())()(((())())(()()))))((())(())((()((((()()()())()((()((((()))()))()()((((()())(()()((()(((((((()((()()))))()(()))())(()())()(())(())(((((((()))(())()()))(((((()))))(()))((()...
output:
Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes ...
result:
ok 100000 token(s): yes count is 100000, no count is 0
Test #11:
score: 0
Accepted
time: 2078ms
memory: 14940kb
input:
100000 200000 ()((()(())((((()(()()(()()(()(((())()(())()()()(((((((()(()((()))()()))))))())(()()((()()))()))())()((((()(())))))((())))((()()(())())(())())((()))()()))((((((()))))))()())(()())())((((()()((((()))))()(()()(()()())()())((()()(((())(()(()()()())((()((((()))()()((((((((()(((((()(()()(()(...
output:
Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes ...
result:
ok 200000 token(s): yes count is 200000, no count is 0
Test #12:
score: 0
Accepted
time: 2368ms
memory: 19908kb
input:
150000 200000 ((()()(()((((((()())((((((()(((()))()()(((()()(())(())(((()((())(((())(())(())())(((()((((())((())))())((()(()()()(()((()()(()((((()))(()))((())(()()(()()())))((((())())()))))(())))(((()(()))((()())))(()))(((((()((()))))(()()(((()))((((((()))())))()())((((())()(()))))((()())()))))))(((...
output:
Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes ...
result:
ok 200000 token(s): yes count is 200000, no count is 0
Test #13:
score: 0
Accepted
time: 3245ms
memory: 20136kb
input:
200000 250000 (()())(()()()((((()((((((()())((((())()(()(())()(())(((()(())))(()())())(()()()()(()(()()((((()())())()()()((()()())))((()(()()))))))(()()))()(((())(()))()()(()(())))(()((()()())(()())))))()()()(())()(()())(()))))()())((((()(())()(((())))((()()))())((()()(((((()))(())((())))(((()((((((...
output:
Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes ...
result:
ok 250000 token(s): yes count is 250000, no count is 0
Test #14:
score: 0
Accepted
time: 3984ms
memory: 35944kb
input:
300000 300000 ((((()(()((()()))()(((((((()()())))((((()(()())(())))(())()()(())(()()()(((((()(((()))(((()((((())))))())(()()())((()))((()))()())())((((()(((()((((((()))((())((())))()(()(((()))(((()()(()())(()()(()(()))())()()(())))((((((())()(()))(((()())((((()(()((())()()))))()(())(((((())))))(()((...
output:
Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes ...
result:
ok 300000 token(s): yes count is 300000, no count is 0
Test #15:
score: 0
Accepted
time: 348ms
memory: 5812kb
input:
30 300000 ((((((((((((((())))))))))))))) 11 17 4 16 10 25 5 20 13 28 13 16 13 23 4 23 7 11 6 18 7 18 11 21 2 18 15 22 10 22 9 15 15 23 5 21 16 17 6 14 15 16 5 16 10 17 10 23 25 27 17 24 23 27 11 24 23 24 5 7 6 21 6 20 9 21 16 22 11 13 13 19 6 27 12 16 6 19 5 14 22 23 2 6 26 27 20 26 12 28 5 16 20 27...
output:
No No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Ye...
result:
ok 300000 token(s): yes count is 298544, no count is 1456
Test #16:
score: 0
Accepted
time: 341ms
memory: 5696kb
input:
30 300000 ()()()()()()()()()()()()()()() 12 25 12 20 10 13 12 15 13 20 14 19 19 27 22 29 12 27 14 29 14 21 10 15 21 27 12 15 10 21 11 21 21 27 16 29 6 13 7 28 8 28 13 22 10 25 11 13 14 20 2 16 14 20 10 25 25 27 22 23 9 23 19 24 11 20 23 26 6 11 21 25 21 23 7 26 24 26 18 20 2 15 15 21 17 24 16 23 14 ...
output:
Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes ...
result:
ok 300000 token(s): yes count is 298652, no count is 1348
Test #17:
score: -100
Time Limit Exceeded
input:
300000 300000 ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((...
output:
No Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Y...