QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#81947 | #5516. Modern Machine | zhouhuanyi | 15 | 541ms | 7820kb | C++23 | 2.2kb | 2023-02-26 19:02:04 | 2023-02-26 19:02:13 |
Judging History
answer
#include<iostream>
#include<cstdio>
#include<set>
#define N 120000
using namespace std;
int read()
{
char c=0;
int sum=0;
while (c<'0'||c>'9') c=getchar();
while ('0'<=c&&c<='9') sum=sum*10+c-'0',c=getchar();
return sum;
}
struct reads
{
int l,r;
char data;
bool operator < (const reads &t)const
{
return r<t.r;
}
};
char c[N+1];
int n,m,q,res,a[N+1],A[N+1];
set<reads>s;
char query(int x)
{
auto it=s.lower_bound((reads){0,x});
return (*it).data;
}
int get_r(int x)
{
auto it=s.lower_bound((reads){0,x});
return (*it).r;
}
int get_l(int x)
{
auto it=s.lower_bound((reads){0,x});
return (*it).l;
}
void adder(int l,int r,char cs)
{
reads top;
int sl=l,sr=r;
while (1)
{
auto it=s.lower_bound((reads){0,l});
if (it==s.end()||(*it).l>r) break;
top=(*it);
if (top.data=='R') res-=(top.r-top.l+1);
s.erase(it);
if (top.l<=l-1)
{
if (top.data=='R') res+=(l-top.l);
s.insert((reads){top.l,l-1,top.data});
}
if (r+1<=top.r)
{
if (top.data=='R') res+=(top.r-r);
s.insert((reads){r+1,top.r,top.data});
}
}
auto it=s.lower_bound((reads){0,r});
if (it!=s.end()&&(*it).data==cs) sr=(*it).r,s.erase(it);
it=s.lower_bound((reads){0,l});
if (it!=s.begin())
{
it--;
if ((*it).data==cs) sl=(*it).l,s.erase(it);
}
s.insert((reads){sl,sr,cs});
if (cs=='R') res+=(r-l+1);
return;
}
int main()
{
int l,r,sl,sr,op;
n=read(),m=read();
for (int i=1;i<=n;++i) cin>>c[i];
for (int i=1;i<=m;++i) A[i]=read();
q=read();
while (q--)
{
l=read(),r=read(),res=n,s.clear();
s.insert((reads){1,n,'R'});
for (int i=1;i<=n;++i) adder(i,i,c[i]);
for (int i=l;i<=r;++i)
{
sl=sr=A[i],adder(A[i],A[i],'R'),op=0;
while (1)
{
if (!op)
{
if (sr==n)
{
op=1;
break;
}
else if (query(sr+1)=='R') sr=get_r(sr+1);
else sr++,op=1;
}
else
{
if (sl==1)
{
op=0;
break;
}
else if (query(sl-1)=='B') sl=get_l(sl-1);
else sl--,op=0;
}
}
if (!op) adder(sl,sr,'R');
else adder(sl,sr,'B');
}
printf("%d\n",res);
}
return 0;
}
详细
Subtask #1:
score: 3
Accepted
Test #1:
score: 3
Accepted
time: 1ms
memory: 3404kb
input:
3 1 BBR 3 1 1 1
output:
0
result:
ok single line: '0'
Test #2:
score: 0
Accepted
time: 1ms
memory: 3460kb
input:
3 10 BBB 3 3 3 1 3 3 3 3 3 1 1 2 5
output:
2
result:
ok single line: '2'
Test #3:
score: 0
Accepted
time: 2ms
memory: 3464kb
input:
10 1 RBBBBRRBBR 9 1 1 1
output:
3
result:
ok single line: '3'
Test #4:
score: 0
Accepted
time: 2ms
memory: 3464kb
input:
10 10 RRRBBRRBRB 5 9 4 6 7 7 4 3 8 2 1 1 10
output:
1
result:
ok single line: '1'
Test #5:
score: 0
Accepted
time: 2ms
memory: 3388kb
input:
300 300 BRRRRBBRBRBRBBBRBRRRBRBBRBBRRBBRBBRBRBRBRBBRRBBRBBRBBBBRRRRBRBRBBBBRBBBRBBRBBRBRBRRBRBBRRRRBRBBRRRBRRBRBBBRRRRBRRRBBBBRRBBRBBBRRRBRBBRBRBBRRBRBRRRBRBRBBBBRRBRBRRRRRBRRRRRBRRRBRBRRRRRBBBRRBBRBBRRRRBBBBRBRBBBRRRRBBBBBBBBBBRBRRBRBBRRRRBRBBRRRBBRBRRRBBRBRRBBRBBBBRBRBRBBBRBBRBRBBRBBRBRBRBRRRBBBBR...
output:
29
result:
ok single line: '29'
Test #6:
score: 0
Accepted
time: 2ms
memory: 3376kb
input:
300 300 RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB...
output:
149
result:
ok single line: '149'
Test #7:
score: 0
Accepted
time: 2ms
memory: 3508kb
input:
5 2 RBRBB 2 5 1 1 2
output:
4
result:
ok single line: '4'
Subtask #2:
score: 12
Accepted
Dependency #1:
100%
Accepted
Test #8:
score: 12
Accepted
time: 6ms
memory: 3700kb
input:
7000 7000 RRBRRRRRRBBRBRBRRRBRRRBRRRRBRBRBRBRBBBRBRRRBBBRBBBBBBRBBBRRBRBRBBRRRBBBBRRBBRBBRBBRRRBBRRBRBRRRRRBBRRBRBBBRBBRRRRBRBBBBRBBBBBBRRRBRBRBBRBRRBBBBBRRBBBBBBRBBBRRBBRRBBBBBBRBRBRBBRBBRBBBRRBRBBRBBBBBRBRRBRRBRRRBRBBBBBRRBRBRRBRRRRBBBBRRBBRRRRRBBBBBRRBBBBBBRRBBRBRRRRRRRBRRBRRBBBBBBBBRRRRBBRRRRRRR...
output:
5505
result:
ok single line: '5505'
Test #9:
score: 0
Accepted
time: 3ms
memory: 3748kb
input:
7000 7000 RRBRRRBBRRBBRBBBBRBRBRRBBBBBBBBBBRRRBRRBBRRRRBBRRBRRRRRBBRBBBBBRRBBBBRBBBBRBRBBBBBRBBRRRBBBBRRBRRBRRBRBBBRRRRBBRRBRRBRBBRBBBRBBBRRBRBBBRRBBBBBRBBRBRBRBBBBRRBBBRRRRBRRBBRBRBBBBBBRRRRRBBRRBBRRBBBRBBBRRRRRBRBBRBRBBRRBBRBRRRBBRRBBBRRBRRRRRRRBBRBRRBRBRBRBRBRBBRBRRBRBBBBBBBRRBRRRBBBBRRBBRRRBBRBR...
output:
5936
result:
ok single line: '5936'
Test #10:
score: 0
Accepted
time: 37ms
memory: 3712kb
input:
7000 7000 RBBRBRBRRRBBRBRRBRBBRBRRRBRBBBRBBRBRBRBRRBBBBRBRRRBBRRRRBBRRRRBBRBRBRRRRBBRRBBRBRBBBRBBBBBRBBRBBRRBBRRRRRBBRBRBRRBBRRRBRBBBRBRRBRRRBRRRBRBBBBRBBBBBBRBRRRBRRRBRBBBRBRRBBRRBRRBBBBBRBBRRRRBBRRBBBBRRBRBRRRRBBRRRRRBRBRRBBRRRRRBRRBRBBBBRRBBBBRBRRRBBRBRRRRRBRRBRRRBRRBRRRRRBBBRBBBRBRRRBRBBBBRRRRRR...
output:
6260
result:
ok single line: '6260'
Test #11:
score: 0
Accepted
time: 82ms
memory: 3464kb
input:
7000 7000 RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR...
output:
3499
result:
ok single line: '3499'
Test #12:
score: 0
Accepted
time: 4ms
memory: 3648kb
input:
7000 7000 BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB...
output:
3906
result:
ok single line: '3906'
Subtask #3:
score: 0
Time Limit Exceeded
Dependency #2:
100%
Accepted
Test #13:
score: 10
Accepted
time: 541ms
memory: 7804kb
input:
120000 120000 BBBBRBBRBRRBRRRBBBRRRRRBRRRRRRRRRRRBBBBRBRBBBBBBRBRBBBRBBRBRRBBRBRRRBRBBBBBRBRRBBRRRRRBBRBBBBRBBRRBRRRRBRBBBRRRBBBRRBRRBBBRRRBRRRBBRBBRRRBBBRBBRBBBBBRBRRRRBBRBRBRBBRRRRRRRBBRRBBBBRRRBBRRRRRBBBBRBBBBRBRRBBBRBRBBBRBRBRRBBRBRBBBRRBBRBBBBRBBRRBRBRBRBRRBBRBBBBBBBRRRRBRBRBRBRRRRBRRBBBRBRRBRB...
output:
110620 106126 106019 110676 111965
result:
ok 5 lines
Test #14:
score: 0
Accepted
time: 538ms
memory: 7820kb
input:
120000 120000 BRRBBBRRRRRRRBRRRRRRRBBRBBRRBBRRRRRBRBRRBRRRRRBRRBBBBRRBRRRBBBBRRBRBRBBBRBBRRBRRRBRRBRBBBBRRRBRBRBRBBBBRBRRRBRBBRBBBRRBBBRBBBBRRBBRRBBRBRRRBBBRBBBRRRRBBBBBRRRRBBBBBBBRRRRRRRBBBRRRBBRRRRBBBRBBBRRBBBRRRRRRRRRRRRRBRRBRRBRBRRBBBBBBRRRRBRRBRBBBBRRBRRRRRBRRBRRRBBRRRBBRRRRRBRBRRRRBBBBBBBRBRRR...
output:
96348 101002 105432 99656 104213
result:
ok 5 lines
Test #15:
score: -10
Time Limit Exceeded
input:
120000 120000 BRBRRBBBRBRBRRRRBRRRRBBRBRBBBBBBBRBBRRBRRRRRBRRRRBBBRRRBBRRBBRRBBBRBRRRBBRRRBBRRBRRRRRBRRBRBRBRRRRBRRRRBRBRBRRRBBBBRBBRRBRBRRBBRRBBBBRBRRRBRRRRBBBRBBRBBRRBBBBBBBBRBBBBRRBBBRRBRRRRRRBBRBRBRRRBBRRRRBBBBRBBBRBRBRBRBBRRRBBBBBBRRRRRRBRBBRRRRBRBBBRBBRBRRRRBBBRRRBBRBRRBBBRBRRBRRRRRRRBBRRRBRRB...
output:
result:
Subtask #4:
score: 0
Time Limit Exceeded
Test #21:
score: 0
Time Limit Exceeded
input:
10 120000 RRRRRRRRRR 9 1 9 6 1 9 6 10 3 2 6 4 2 5 7 10 8 9 2 6 7 10 2 9 7 5 9 9 2 7 4 1 8 3 3 6 9 4 7 9 6 8 8 2 5 6 8 3 9 2 5 2 5 9 8 4 8 3 2 2 5 1 9 1 7 9 9 4 9 5 2 10 7 4 3 8 1 10 7 6 6 2 3 8 7 8 5 9 2 2 1 10 2 2 5 4 2 5 9 1 8 4 5 1 2 8 3 10 10 6 7 2 1 5 10 1 9 10 1 7 3 10 8 10 6 8 3 1 10 9 10 5 5...
output:
result:
Subtask #5:
score: 0
Time Limit Exceeded
Test #26:
score: 0
Time Limit Exceeded
input:
120000 120000 RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR...
output:
result:
Subtask #6:
score: 0
Time Limit Exceeded
Test #30:
score: 0
Time Limit Exceeded
input:
120000 120000 RRBBRBRBBBRBRRBRBRRRBRBRRBRRRBBRBBBBBBRBBRBRBRBRRBRBRBRRRBRBBBBRRBBRRBBRRRBRRBRBBRRRBBBRRBBBBRBBBRBBBRBBBRBBRBBBBRBBBBRRBRRRRRRRBRRRBRBBBRBBBBRBBRBRBRRBBRRBRBBBBRBBBRBBRRBBBBRBBBBRBRRBRBBRBBBBRRBBBBBBRBBRBBBBBBRBBRRRRRBBBRBBBRBRRBBRBRBRBBRRBRRBBBRBRBRRRBBRRBBRRRRBRRBBRRBBBBBBBRBBBRBBBR...
output:
result:
Subtask #7:
score: 0
Skipped
Dependency #1:
100%
Accepted
Dependency #2:
100%
Accepted
Dependency #3:
0%