社区讨论
妹子刚学oi,QwQ求助搜索1WA 1T
P1092[NOIP 2004 提高组] 虫食算参与者 13已保存回复 22
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 22 条
- 当前快照
- 1 份
- 快照标识符
- @mi7xjac0
- 此快照首次捕获于
- 2025/11/21 05:14 4 个月前
- 此快照最后确认于
- 2025/11/21 06:50 4 个月前
CPP写的好像有点毒瘤但是确实卡不过去了QAQ
#include<bits/stdc++.h>
using namespace std;
int n;
int m[200];
char a[220],b[220],c[220];
int vis[220];
void dfs_2(int dep,int add);
void dfs_1(int dep,int add){
if(dep>n-1){
for(int i='A';i<='A'+n-1;i++){
cout<<m[i]<<" ";
}
cout<<endl;
exit(0);
}
if(m[a[dep]]>-1){
dfs_2(dep,add);
return;
}
for(int i=0;i<=n-1;i++){
if(!vis[i]){
vis[i]=1;
m[a[dep]]=i;
dfs_2(dep,add);
m[a[dep]]=-1;
vis[i]=0;
}
}
}
void dfs_2(int dep,int add){
int p1=m[a[dep]],p2,ans=m[c[dep]];
if(m[b[dep]]>-1){
p2=m[b[dep]];
if((p1+p2+add)%n==ans){
dfs_1(dep+1,(p1+p2+add)/n);
}
else if(ans==-1 && !vis[(p1+p2+add)%n] ){
ans=m[c[dep]]=(p1+p2+add);
vis[(p1+p2+add)%n]=1;
m[c[dep]]%=n;
dfs_1(dep+1,(p1+p2+add)/n);
vis[(p1+p2+add)%n]=0;
ans=m[c[dep]]=-1;
}
return;
}
for(int i=0;i<=n-1;i++){
if(!vis[i]){
vis[i]=1;
p2=m[b[dep]]=i;
if((p1+p2+add)%n==ans){
dfs_1(dep+1,(p1+p2+add)/n);
}
else if(ans==-1 && !vis[(p1+p2+add)%n] ){
ans=m[c[dep]]=(p1+p2+add);
vis[(p1+p2+add)%n]=1;
m[c[dep]]%=n;
dfs_1(dep+1,(p1+p2+add)/n);
ans=m[c[dep]]=-1;
vis[(p1+p2+add)%n]=0;
}
vis[i]=0;
p2=m[b[dep]]=-1;
}
}
}
int main(){
scanf("%d",&n);
for(int i=n-1;i>=0;i--){
scanf(" %c",&a[i]);
}
for(int i=n-1;i>=0;i--){
scanf(" %c",&b[i]);
}
for(int i=n-1;i>=0;i--){
scanf(" %c",&c[i]);
}
for(int i='A';i<='Z';i++) m[i]=-1;
dfs_1(0,0);
return 0;
}
WA数据:
CPP12
FDALHECBJKGI
LIKAEDGJBCFH
IJJAFLICDLFE
[救救孩子吧.gif]
回复
共 22 条回复,欢迎继续交流。
正在加载回复...