QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#926276 | #385. 游戏 | Dinal | 100 ✓ | 47ms | 14488kb | C++14 | 2.6kb | 2025-03-05 17:50:05 | 2025-03-05 17:50:05 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
template<typename T>
void read(T &a){
#define gc getchar()
char c;a=0;int f=1;
while(!isdigit(c=gc))if(c=='-')f=-1;
do a=a*10+c-'0';
while(isdigit(c=gc));
a*=f;
}
template<typename T>
void write(T a){
if(a<0)putchar('-'),a=-a;
if(a>=10)write(a/10);
putchar('0'+a%10);
}
/*
这里不能拆点,然后类似2-sat做,是因为反向的限制无法刻画,没有逆否命题
*/
int n,d,m;
char s[50010];
struct Q{
int i,j;
char hi,hj;
}a[100010];
int h[100010];
struct Edge{
int ne,to;
}e[200010];int eid;
void add_edge(int x,int y){
e[eid].ne=h[x];e[eid].to=y;h[x]=eid++;
}
int id[][3]={{-1,0,1},{0,-1,1},{0,1,-1}};
int choose[][2]={{1,2},{0,2},{0,1}};
int dfn[100010],low[100010],stk[100010],num[100010],scc_num,tp,dfc;
bool ins[100010];
void tarjan(int x){
low[x]=dfn[x]=++dfc;
stk[++tp]=x;ins[x]=1;
for(int i=h[x];~i;i=e[i].ne){
int y=e[i].to;
if(!dfn[y]){
tarjan(y);
low[x]=min(low[x],low[y]);
}else if(ins[y])low[x]=min(low[x],dfn[y]);
}
if(low[x]==dfn[x]){
++scc_num;
do{
ins[stk[tp]]=0;
num[stk[tp]]=scc_num;
}while(stk[tp--]!=x);
}
}
int ans[50010];
bool solve(){
eid=0;for(int i=1;i<=n*2;++i)h[i]=-1;eid=0;
for(int i=1;i<=m;++i){
int x=a[i].i,y=a[i].j;
char cx=a[i].hi,cy=a[i].hj;
int i1=id[s[x]-'a'][cx-'A'];
int i2=id[s[y]-'a'][cy-'A'];
if(i1==-1)continue;
if(i2==-1){
add_edge(2*x-i1,2*x-(1-i1));
continue;
}
add_edge(2*x-i1,2*y-i2);
add_edge(2*y-(1-i2),2*x-(1-i1));
}
for(int i=1;i<=n*2;++i)dfn[i]=0;
scc_num=dfc=0;
for(int i=1;i<=n*2;++i)
if(!dfn[i]){
tp=0;
tarjan(i);
}
for(int i=1;i<=n;++i){
if(num[i*2-1]==num[i*2])return 0;
ans[i]=choose[s[i]-'a'][num[i*2-1]<num[i*2]];
}
for(int i=1;i<=n;++i)putchar('A'+ans[i]);puts("");
return 1;
}
vector<int> b;
signed main(){
// freopen("P3825_18.in","r",stdin);
// freopen(".out","w",stdout);
cin>>n>>d;
scanf("%s",s+1);
for(int i=1;i<=n;++i)
if(s[i]=='x')b.emplace_back(i);
cin>>m;
for(int i=1;i<=m;++i){
cin>>a[i].i>>a[i].hi>>a[i].j>>a[i].hj;
}
for(int i=0;i<1<<d;++i){
for(int j=0;j<d;++j)
s[b[j]]=i>>j&1?'a':'b';
if(solve())return 0;
}
puts("-1");
return 0;
}
詳細信息
Pretests
Final Tests
Test #1:
score: 5
Accepted
time: 0ms
memory: 8020kb
input:
2 0 ba 4 2 C 2 C 1 B 1 A 2 C 1 C 2 B 1 A
output:
CC
result:
ok
Test #2:
score: 5
Accepted
time: 0ms
memory: 5972kb
input:
2 1 xc 4 2 B 2 A 2 A 1 C 2 C 2 C 2 B 1 A
output:
CA
result:
ok
Test #3:
score: 5
Accepted
time: 0ms
memory: 8016kb
input:
5 0 bcbbb 10 1 B 1 C 3 C 1 C 2 B 5 A 1 C 1 C 2 A 5 A 3 A 1 C 2 B 1 C 3 A 1 B 1 B 4 B 1 B 4 A
output:
CACCA
result:
ok
Test #4:
score: 5
Accepted
time: 1ms
memory: 5976kb
input:
5 2 acxax 10 2 B 1 A 3 C 4 C 4 B 3 C 5 B 3 B 2 B 3 A 3 A 2 A 5 B 1 C 3 B 1 B 2 C 4 C 4 B 2 A
output:
CACCC
result:
ok
Test #5:
score: 5
Accepted
time: 0ms
memory: 7892kb
input:
10 0 abbbacabab 20 5 A 3 B 9 A 4 C 4 C 10 A 8 B 3 C 6 C 10 A 5 A 9 C 8 A 2 C 5 A 8 B 10 A 10 A 5 B 4 B 6 C 10 C 2 C 4 B 5 C 7 B 5 A 10 B 3 A 7 B 6 B 4 B 3 C 8 B 1 B 3 B 4 B 3 C 8 A 2 A
output:
CAACCABCCA
result:
ok
Test #6:
score: 5
Accepted
time: 0ms
memory: 5976kb
input:
10 4 xbbxccxbxc 20 2 A 10 A 10 C 4 C 1 A 5 A 2 A 2 A 9 C 2 B 2 B 6 C 2 B 9 A 3 B 2 B 4 B 9 A 4 A 5 A 2 B 10 A 3 B 6 A 8 C 8 B 3 B 3 B 3 B 7 A 9 C 6 C 6 A 8 C 4 A 10 A 2 C 4 B 9 C 7 B
output:
CACCABCAAA
result:
ok
Test #7:
score: 5
Accepted
time: 0ms
memory: 8020kb
input:
20 0 cccccccccccccccccccc 40 15 A 13 C 6 B 19 A 3 C 5 B 20 C 6 C 1 C 10 B 10 C 7 C 13 B 17 A 1 A 3 A 15 A 15 A 13 B 18 B 14 A 4 A 1 A 3 A 4 C 14 A 1 B 6 B 2 B 8 B 3 C 15 A 1 B 17 B 6 A 17 A 12 B 6 A 8 B 1 C 15 B 1 B 18 C 3 C 2 A 8 A 14 B 6 B 15 C 9 A 17 A 10 C 15 A 7 A 8 C 6 A 18 B 12 C 14 C 10 A 9 ...
output:
BAABBBAABBBAABBBBAAA
result:
ok
Test #8:
score: 5
Accepted
time: 1ms
memory: 5976kb
input:
20 0 caaabacbacabbcacabaa 40 7 B 19 C 15 A 12 B 2 A 12 C 20 B 1 B 4 B 4 A 4 A 18 C 4 A 3 A 15 C 12 A 2 C 12 C 15 B 6 A 10 A 12 B 13 C 7 C 2 C 6 C 16 C 18 A 12 B 17 B 8 C 11 B 14 B 11 A 8 B 8 C 19 A 7 C 6 C 3 C 1 C 4 B 1 C 5 A 13 B 4 C 14 B 9 A 11 A 9 C 8 B 16 B 2 C 20 A 2 A 14 C 10 B 13 A 17 A 19 B ...
output:
BBCCABBCCBBAAACACCCC
result:
ok
Test #9:
score: 5
Accepted
time: 0ms
memory: 8020kb
input:
20 8 xccccccxxcxcccccxxxx 40 12 A 18 C 16 C 14 C 10 B 2 C 1 A 10 A 11 A 13 B 15 A 6 B 8 A 14 B 16 A 15 B 4 C 5 C 19 C 4 B 17 C 11 A 12 B 14 C 18 B 17 B 14 A 11 C 16 C 6 C 13 C 20 B 16 B 13 C 8 B 7 C 9 B 16 B 1 B 18 A 7 B 6 A 8 B 19 A 16 C 17 A 8 A 6 A 10 A 14 B 20 C 6 B 13 C 5 A 14 A 3 C 20 B 14 C 4...
output:
CBBBBBACCACABBBAACAA
result:
ok
Test #10:
score: 5
Accepted
time: 1ms
memory: 5976kb
input:
20 8 cbabxccxxxxxbaxxaaac 40 8 C 7 C 19 C 12 C 19 A 6 B 6 C 20 B 12 B 18 B 6 A 10 B 11 B 14 B 20 C 18 B 4 A 7 C 18 A 1 A 18 C 14 A 5 B 13 B 3 B 7 A 8 C 1 C 14 B 4 C 13 A 1 A 7 A 19 A 11 B 16 A 9 A 7 A 11 C 4 B 10 B 1 A 1 A 1 B 5 A 8 C 20 C 13 A 3 B 11 B 18 C 13 A 11 A 20 B 3 A 16 C 17 A 5 C 6 C 17 B...
output:
BCCCCBBACCAACCCCCBBB
result:
ok
Test #11:
score: 5
Accepted
time: 0ms
memory: 5976kb
input:
100 0 cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc 200 62 A 60 B 22 A 46 A 87 A 67 B 29 A 43 A 64 B 28 B 83 B 16 A 50 A 64 B 48 A 95 A 28 B 90 A 5 A 12 A 23 B 86 A 62 A 81 B 64 B 9 B 5 A 10 B 89 B 18 B 69 B 62 A 63 A 55 A 28 B 92 B 49 A 43 A 71...
output:
BBABBBAAAAABBBBBBABBABABABAABBBBAABBAABBAABBABBBBBABBABABBAAABBABABBAABBBABABBAAAAABBBAAABBAAABBBBBB
result:
ok
Test #12:
score: 5
Accepted
time: 0ms
memory: 7856kb
input:
100 0 cabaabbaaabacbaccbccacbcaaccccbbcccbabbaaaacccbaaabbcaaabaabcaabcbbcaabaabaaccacbaabbacbbacaaabcbbca 200 94 C 31 A 29 B 48 B 89 C 52 A 49 B 11 C 10 C 66 C 90 B 49 B 80 B 19 B 26 B 54 B 20 B 65 B 52 A 80 B 51 A 33 A 94 C 6 C 18 C 60 A 87 B 45 B 12 C 7 A 26 B 57 A 89 C 54 B 4 B 29 B 39 A 67 C 22...
output:
BCCBCCABCCCCBCBBBCBBCBCABBAABBAAAAAACCCCBCCBBBABBCAABBCCACCABCCABCCABBCCCACCBBCBCBBCACBCCBBCBCCAAAAC
result:
ok
Test #13:
score: 5
Accepted
time: 0ms
memory: 5976kb
input:
100 8 cccccxccccccxccccxccccccxcccccccxccccxccccccccccxccccccccccccccccccccccccccccccccccccccxcccccccccccc 200 38 A 13 B 60 A 18 B 36 B 76 B 95 A 7 B 25 A 58 B 53 A 27 A 21 A 78 A 15 A 48 A 52 B 59 A 65 B 68 A 72 A 47 A 95 A 48 A 96 A 67 A 96 A 47 A 46 B 96 A 79 B 36 B 60 A 90 B 5 B 95 A 17 A 99 A 2...
output:
BABBACBBABBACBBBBCBABAAAAAAABBBACBAAACBABBAABABACBBABAABBBBBBBAAABABAAABBAAABBAAAABABBBCBABBAABBAABB
result:
ok
Test #14:
score: 5
Accepted
time: 1ms
memory: 5972kb
input:
100 8 ccbbcaacxxbcxacbcaabxaaccbxcaabacbccaccacbcacxcacccccccbcacbaabbabaacbbababaxabcccacaxabaaacabbcbccc 200 41 A 8 A 75 C 86 C 93 B 26 A 83 C 55 A 49 B 69 B 50 B 54 B 41 A 85 C 43 B 4 A 75 C 95 A 2 A 54 B 14 C 3 A 18 C 79 A 5 B 8 A 61 C 90 B 48 C 96 B 84 A 40 C 55 A 58 B 77 A 47 A 36 A 60 A 2 A 8...
output:
BBCAABBBCACBCBBAABCCCCCABCAACCCBAAABCAACBCABACACAAAAAABCACACCCCCCCBBACCBABACCBCBBABBBACCCBCACCCBABBA
result:
ok
Test #15:
score: 5
Accepted
time: 4ms
memory: 6224kb
input:
5000 0 ccbbbbacccabaacccbccaabcbcbabcabbbcbccacbbcccbccbcacbacaacbccaaacbcaabbacacabaaaccacbaccbbbccaabbbcabcbabaaccbaacacbaaccbacaccababcabbbccacbcabaabababaacccbbababbaabbbaccbabaabbbcbacbbbbbacbbabcabacbbcbaaaaaaccbaaaabccccacaaacabaabaccacabbaacaaccbbcbcaaaccbbccbccbccaacbccacbcbbacaaaaabbacbaab...
output:
-1
result:
ok
Test #16:
score: 5
Accepted
time: 4ms
memory: 8024kb
input:
5000 8 ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc...
output:
BABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABA...
result:
ok
Test #17:
score: 5
Accepted
time: 5ms
memory: 7892kb
input:
5000 8 abcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcab...
output:
CABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCAB...
result:
ok
Test #18:
score: 5
Accepted
time: 23ms
memory: 14356kb
input:
50000 0 baabcbbaacbbabababbbabcbcbbcabccaaacccbaaabcabccccbbaacbaaacbcacbabbbbabccabaabbcabacacaaabbaccccbcacaaacbcaacbcacbbabbcbabccbbcacbacbbccacbcabcbcbcacbaacaaccbcbabaaacbcbbccbcacacccbbcabcaccacaaaaaacbcaccaacbbbaaaccaaccaaacbacbaaccaabccaababbabaaaaacbaabaccabacbcbabbcbaabacbbacbbaaabababccac...
output:
ABBAAAABBAAABABABAAABAAAAAAABAAABBBAAAABBBAABAAAAAAABBAABBBAAABAABAAAABAAABABBAAABABABABBBAABAAAAAABABBBAAABBAAABAAABAAAABAAAAAABAABAAAAABAAABAAAAAABAABBABBAAAAABABBBAAAAAAAAABABAAAAAABAABAABABBBBBBAAABAABBAAAABBBAABBAABBBAABAABBAABBAAABBABAABABBBBBAABBABAABABAAAABAAAABBABAAABAAABBBABABAAABABBAABAAA...
result:
ok
Test #19:
score: 5
Accepted
time: 47ms
memory: 14332kb
input:
50000 8 cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc...
output:
BABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABABA...
result:
ok
Test #20:
score: 5
Accepted
time: 45ms
memory: 14488kb
input:
50000 8 abcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabca...
output:
CABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCABCAB...
result:
ok
Extra Test:
score: 0
Extra Test Passed