QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#714324 | #8523. Puzzle II | Loging | TL | 2172ms | 10092kb | C++14 | 2.0kb | 2024-11-05 22:39:04 | 2024-11-05 22:39:07 |
Judging History
answer
#include<cstdio>
#include<algorithm>
#define M 600005
using namespace std;
char A[M],B[M];
int L[M],R[M];
int Ans[M][2];
int sz;
bool flag;
char st;
void Swap(int &a,int &b,int &c,int &d){
swap(R[L[a]],R[L[c]]);
swap(L[R[b]],L[R[d]]);
swap(L[a],L[c]);
swap(R[b],R[d]);
swap(a,c);swap(b,d);
}
int n,m;
void Add(int &x){
x++;
if(x>n)x-=n;
}
void Del(int &x){
x--;
if(x==0)x+=n;
}
int Inv;
char C[M],D[M];
void Print(){
printf("%s\n%s\n\n",C+1,D+1);
}
int F(int x){
if(x<=0)return x+n;
if(x>n)return x-n;
return x;
}
void Addans(int p1,int p2){
sz++;
// int tmp1=p1,tmp2=p2;
// for(int i=1;i<=n;i++){
// if(i==tmp1)putchar('[');
// else if(F(tmp1+m-1)==i)putchar(']');
// else putchar(' ');
// }
// puts("");
// printf("%s\n",C+1);
// for(int i=1;i<=n;i++){
// if(i==tmp2)putchar('[');
// else if(F(tmp2+m-1)==i)putchar(']');
// else putchar(' ');
// }
// puts("");
// printf("%s\n",D+1);
for(int i=1;i<=m;i++){
// printf("m=%d\n",flag?(n-m):m);
swap(C[F(p1+i-1)],D[F(p2+i-1)]);
}
// printf("%s\n%s\n\n",C+1,D+1);
Ans[sz][0]=p1;Ans[sz][1]=p2;
}
int main(){
scanf("%d%d",&n,&m);
scanf("%s",A+1);
scanf("%s",B+1);
for(int i=n+1;i<=n+n;i++)A[i]=B[i-n];
int cnt=0;
for(int i=1;i<=n;i++){
int lst=i-1,nxt=i+1;
if(lst==0)lst=n;
if(nxt==n+1)nxt=1;
L[i]=lst;R[i]=nxt;
L[i+n]=lst+n;R[i+n]=nxt+n;
C[i]=A[i];D[i]=B[i];
cnt+=A[i]=='B';
}
// if(m>=n/2){flag=true;m=n-m;}
if(cnt<=n/2)st='C';
else st='B';
int fr1=1,ed1=m,fr2=n+1,ed2=n+m;
int p1=1,p2=1;
while(1){
int cnt=0;
while(A[fr1]==st&&cnt<=n){
fr1=R[fr1];
ed1=R[ed1];
Add(p1);
cnt++;
continue;
}
if(cnt>n)break;
while(A[ed2]!=st){
fr2=L[fr2];
ed2=L[ed2];
Del(p2);
}
fr1=R[fr1];ed1=R[ed1];Add(p1);
Addans(p1,p2);
Swap(fr1,ed1,fr2,ed2);
fr1=L[fr1];ed1=L[ed1];Del(p1);
Addans(p1,p2);
Swap(fr1,ed1,fr2,ed2);
// printf("%s\n%s\n\n",C+1,D+1);
}
printf("%d\n",sz);
for(int i=1;i<=sz;i++)printf("%d %d\n",Ans[i][0],Ans[i][1]);
return 0;
}
详细
Test #1:
score: 100
Accepted
time: 1ms
memory: 5732kb
input:
6 3 BCCBCC BBCBBC
output:
4 2 1 1 1 4 4 3 4
result:
ok moves = 4
Test #2:
score: 0
Accepted
time: 1ms
memory: 7700kb
input:
2 1 BC BC
output:
2 2 2 1 2
result:
ok moves = 2
Test #3:
score: 0
Accepted
time: 0ms
memory: 7788kb
input:
2 1 BB CC
output:
0
result:
ok moves = 0
Test #4:
score: 0
Accepted
time: 0ms
memory: 7764kb
input:
2 1 CC BB
output:
0
result:
ok moves = 0
Test #5:
score: 0
Accepted
time: 1ms
memory: 5704kb
input:
3 1 CCC BBB
output:
0
result:
ok moves = 0
Test #6:
score: 0
Accepted
time: 1ms
memory: 7756kb
input:
3 1 CBC BCB
output:
2 3 2 2 2
result:
ok moves = 2
Test #7:
score: 0
Accepted
time: 1ms
memory: 9732kb
input:
3 2 BBB CCC
output:
0
result:
ok moves = 0
Test #8:
score: 0
Accepted
time: 0ms
memory: 9768kb
input:
3 2 BCB BCC
output:
2 3 3 2 3
result:
ok moves = 2
Test #9:
score: 0
Accepted
time: 0ms
memory: 9804kb
input:
4 2 CCCB BBCB
output:
2 1 2 4 2
result:
ok moves = 2
Test #10:
score: 0
Accepted
time: 1ms
memory: 9796kb
input:
9 6 CCCBCCCBB BBBCBBBCC
output:
6 5 8 4 8 8 5 7 5 8 5 7 5
result:
ok moves = 6
Test #11:
score: 0
Accepted
time: 1ms
memory: 9808kb
input:
21 3 CCCCBBCBCCCCCCCBCCCCC BBCCBCBBBBBBBBBCBBBBB
output:
8 6 1 5 1 6 14 5 14 7 4 6 4 17 3 16 3
result:
ok moves = 8
Test #12:
score: 0
Accepted
time: 0ms
memory: 9796kb
input:
49 41 CBCCBCCBCCBCCBCCCBBCCBCBBCCCBBCCBCBCBCBCCCCBCBCCB BCCCCBCBBBBCBCBBBBBCBBBBCCCCBCBBCBBCBBBBCBCBCBBBC
output:
38 3 1 2 1 5 46 4 46 7 44 6 44 9 42 8 42 11 41 10 41 14 41 13 41 14 41 13 41 16 41 15 41 17 37 16 37 17 32 16 32 20 31 19 31 20 27 19 27 22 26 21 26 23 26 22 26 24 26 23 26 25 26 24 26 30 24 29 24 32 20 31 20 35 18 34 18
result:
ok moves = 38
Test #13:
score: 0
Accepted
time: 0ms
memory: 5692kb
input:
114 8 BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
output:
0
result:
ok moves = 0
Test #14:
score: 0
Accepted
time: 0ms
memory: 5740kb
input:
266 28 CBBCBBCCCCBCBBCBBBCBCBCBCBBCBCBBCCCCBCCCCCBCCBBCCBBCBCBBCCCCCCBBBCCCBCCBCBBCCCBCCCCCCBCBBCCCBCBBCCBCBBBCBCCCBBCBCCCCBBCBBCBBCCBBCCCCCBBCCCBCCCCCCCCBBBBBBCBCCBCCCCBBCBBBBCBCCCCCCCBCBBCBCCCCCCCCCCCBBBBCCCCBCBCCCBCCCCCCCCCBCBCCCBBBCCCBCCBCBBCBCCCCCCBCBCCCCBCBCCBCCCCBCB CCBCBCBBCBCBBCBCCCBBBCBCBB...
output:
206 3 266 2 266 3 264 2 264 4 263 3 263 4 260 3 260 8 260 7 260 9 260 8 260 9 259 8 259 10 257 9 257 10 256 9 256 10 254 9 254 11 253 10 253 12 252 11 252 13 252 12 252 14 250 13 250 14 245 13 245 15 245 14 245 18 242 17 242 20 240 19 240 27 236 26 236 41 235 40 235 44 226 43 226 44 218 43 218 47 21...
result:
ok moves = 206
Test #15:
score: 0
Accepted
time: 2ms
memory: 9732kb
input:
620 443 BBBBBBCBBBCBBCBCBCBBBBCCCBCCBCBBBBBBCCCBBBCCBBCBCBCBBCCCCBCBBCBCCCCBBBBBBCCCCCBBBBCCBCBBBBBCBCBBCBCBCCCCBCBBCBBBCBBBCCCBCCCBBBBBCCBBCCBBBCCBCCBCBBCBCCCCCCCCCBCBCBBBCBBCBBCBBBBBBBCCBBBBBBBBBBCBBCBBCBBCCCBBCCBBBBCCCBBBBBBCBBBBBBBBCBBCBCBBBCCBBBBCCBBBCBCBCBBBBBCBBCBBBBCBBBBCCBBBCBBBBBCBBCCCCBCC...
output:
484 8 1 7 1 11 619 10 619 13 619 12 619 14 618 13 618 15 618 14 618 19 618 18 618 19 618 18 618 19 616 18 616 20 615 19 615 20 613 19 613 21 606 20 606 27 606 26 606 27 606 26 606 27 605 26 605 30 604 29 604 30 603 29 603 32 598 31 598 33 595 32 595 34 594 33 594 36 593 35 593 36 592 35 592 36 592 3...
result:
ok moves = 484
Test #16:
score: 0
Accepted
time: 2ms
memory: 9824kb
input:
1446 646 CCCBCCCCCCCBBCCBBCCCCBBCCCBBCCCCCCCCCCCCCCCBCCCCCCCCBBCCBBCCCBCBBBCCCCBBCCCCCCCCCCCBCBCCCBBCCCCBBCBCBCCCCCCCBCCCCCCCBCCBCBBCCCCCCCCCCCCBCCCBCCCCCCBCCCBCCCCCBBCCCBBCCCBBBCCBCCBCCBBBCBCBCCCCBCBCCCBCCCCBBCCCCCCCBCCCCBCCCBBBCCCBCCBBCCCCBCCCBBCBCCCCCBBCCBCCCCCCBCCCCCCCCCCCCCCBCCCCCBCBCCCCBCCCCCB...
output:
874 5 1444 4 1444 12 1444 11 1444 12 1444 11 1444 14 1443 13 1443 14 1439 13 1439 18 1439 17 1439 18 1432 17 1432 21 1431 20 1431 21 1428 20 1428 36 1427 35 1427 44 1424 43 1424 44 1417 43 1417 46 1414 45 1414 46 1414 45 1414 49 1402 48 1402 50 1400 49 1400 50 1392 49 1392 50 1388 49 1388 54 1377 53...
result:
ok moves = 874
Test #17:
score: 0
Accepted
time: 5ms
memory: 9808kb
input:
3374 2755 BCBBCBBBCBBBBBBBBBCCBBBBBBBCCBBCBBCBBBBBCBBBBBBBBCBBBBBBBBBBBBCBBBCCBBBBCBBBBBCBBBBBCBBBBCBBBBBBBBBCBBBBBBBBBBBCBBBBBBBCBBBBBBBBBBCCBBBBBBBBBCBBCBBBCBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCBBBCBBCBBBBBBBBBBBBBBCCBCBCBCBBBBCBBBCBBBBBBBBCBBCBCBBCBCCBBBBBBBBBBBCCBBBBBBBBBBBBBBBBBCBBBBBBBBBBB...
output:
1216 3 3372 2 3372 5 3368 4 3368 8 3366 7 3366 17 3364 16 3364 17 3364 16 3364 24 3358 23 3358 24 3350 23 3350 26 3349 25 3349 28 3342 27 3342 33 3340 32 3340 41 3335 40 3335 53 3335 52 3335 56 3325 55 3325 56 3325 55 3325 60 3325 59 3325 65 3322 64 3322 70 3318 69 3318 74 3318 73 3318 83 3310 82 33...
result:
ok moves = 1216
Test #18:
score: 0
Accepted
time: 57ms
memory: 9836kb
input:
7872 7827 BCBBCBCBBCCBCBBBCCCBBBBBBBCBBBBCCBCCBCBBBBBBCBBCBBBCCCBBBCCCCBCBBBBCBBCCBBBBCCBBCBBBCBCBBCBCBBCCBBBCCBBBBCCBBCBBBBBBCBBBBBBBBCCBBCCCCBCCCBBCCCBBCBCBBBCBBBBCBBBBCBCBBBCCBBCCCCBBBCBBCCBBBBBBCBBBBCCCBBBCCCBBCCCBBBBBBCCBBBCCCCBBBCBBCBCCBBBCCCCBCBBCCBBBBCCBBBCBBCBBBCBBBCBBBBCCBBBBBCCBCBCBBBBBBB...
output:
5928 3 1 2 1 5 7870 4 7870 6 7868 5 7868 8 7862 7 7862 8 7857 7 7857 9 7855 8 7855 12 7853 11 7853 12 7853 11 7853 12 7851 11 7851 19 7849 18 7849 23 7840 22 7840 23 7838 22 7838 24 7838 23 7838 24 7838 23 7838 25 7837 24 7837 31 7837 30 7837 33 7836 32 7836 36 7833 35 7833 36 7831 35 7831 36 7831 3...
result:
ok moves = 5928
Test #19:
score: 0
Accepted
time: 155ms
memory: 9900kb
input:
18368 17997 CBBBBBBBBBBCBBBBBBBBBBBBBBCBBCCBBBBBBBBBBBBBCBCBBBBBBBBCBBBBBCBBBBBBBBBBBBBBCBBBBBBBBBBCBBBCBCBBBBBCBCBBCBBBBBBBBBBBBBCCCBBBBBBCBBBBCBCBBCBBBBBCBBBBBBBCCBBBBCCBCBBBBBBBBBBBBCBBBBBBBBCBCBBBBBBBBCBCBBBBBBBBBBBCBBBBCCBBBBBBBCBBBBBBBBBBBBBBBCCBBCBCBBCBCBBBCBBBBBBBBBBBBBCBBCBBBBBBBCCCBBBBBBBB...
output:
7330 2 1 1 1 12 18363 11 18363 26 18361 25 18361 28 18360 27 18360 28 18357 27 18357 41 18356 40 18356 42 18355 41 18355 50 18352 49 18352 55 18339 54 18339 69 18333 68 18333 79 18333 78 18333 82 18327 81 18327 83 18326 82 18326 88 18326 87 18326 89 18323 88 18323 91 18316 90 18316 104 18315 103 183...
result:
ok moves = 7330
Test #20:
score: 0
Accepted
time: 275ms
memory: 7896kb
input:
42858 28689 CCCCCCCCCCCCCCCCCCCCBCCCBBCCCBCCCCCCCCCBCCCCCCCBCCCBCCCCCBCCCCCCCCBCCBCCBCCCCCCCCCCCCCCCCCBCCCCCCCCCBCCCCBCCCCCCCCCCCCCCCCCCCCCCCCCCCCBCCCCCCCCCCCCCCCCCBBCCCCCCCCCCCCCCBBCCCBCCCCCCCCCCBCCCCCCCBCCCCBCBCCCBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBCBCCCBCBCCCCCCCCCCCCCCBCCCCCCCCBCCCCCCCCCCCCCCCCCC...
output:
8086 22 1 21 1 25 42853 24 42853 25 42843 24 42843 28 42821 27 42821 37 42799 36 42799 44 42792 43 42792 47 42773 46 42773 52 42757 51 42757 60 42750 59 42750 62 42748 61 42748 64 42727 63 42727 81 42707 80 42707 90 42698 89 42698 94 42688 93 42688 122 42683 121 42683 139 42683 138 42683 139 42642 1...
result:
ok moves = 8086
Test #21:
score: 0
Accepted
time: 2172ms
memory: 10092kb
input:
100002 40466 BBBBBBBCCBCBCCBCBBBBCCBBCBBBBBBBBBBCBBBBCBBBBBCBBBBBBBBBCBBBCBBBCCBCBCBBBBBBCBBBBBBBCBBBBBCBBBBCBCBCBBBBBBBBCBBBBBBBBCBCBBBBCBBBBBBBBBBBBBCBCBBCBBBBBBBBBBBCBBBBBBBCBCBCBCBBBBBBBBCBCBBBBBBBBCBBBBBBBBCBCCBBBCCBBCBBCBBBBBBBBBBCBBBCBBBBBBBBBBBBCBBCCBBCBBCBBBBCBBBBCBBBCCBBBCBBBBBBBCBBBBCBBBC...
output:
45728 9 99999 8 99999 9 99998 8 99998 10 99994 9 99994 11 99989 10 99989 11 99988 10 99988 12 99987 11 99987 16 99978 15 99978 16 99968 15 99968 18 99966 17 99966 28 99964 27 99964 32 99964 31 99964 37 99959 36 99959 46 99958 45 99958 49 99955 48 99955 52 99940 51 99940 52 99940 51 99940 53 99930 52...
result:
ok moves = 45728
Test #22:
score: -100
Time Limit Exceeded
input:
233338 159967 CCBCBBCCCCBBCCCCCCCCBCCCBCCCCBCCBCCCCCCCCCBCBCCBBCBBCCCCBCCCCCCCCCCCCCCCCCCCBCCBCCBBCBCCBBBCCBCCCCBBCCCBCCCCCCCCCCCBCCBCCCCCCCCBCCCBBCBCCCBCCCCCBCCBCCBCCCCCCCBCCCCCBCCBBCCCCCCCBCCCCCCCCBBBCCCCCCCCCCCCBBBCCCBBCCBCBCCCCCCCCCBCCCCBCCCCCCCCBBCCCCBCCCCBCCCBCCCBCCCCCBCCCCCBBCCCBCCCCCCCCCCCCC...