QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#586099 | #9263. Rebellious Sequences | shstyle | TL | 3171ms | 20872kb | C++23 | 3.9kb | 2024-09-24 02:35:00 | 2024-09-24 02:35:02 |
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: 0ms
memory: 7724kb
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: 5824kb
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: 5876kb
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: 5772kb
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: 5816kb
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: 5872kb
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: 5872kb
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: 89ms
memory: 5924kb
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: 311ms
memory: 6632kb
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: 890ms
memory: 9276kb
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: 2086ms
memory: 13240kb
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: 2364ms
memory: 20164kb
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: 3171ms
memory: 20872kb
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: -100
Time Limit Exceeded
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 ...