妹子刚学oi,QwQ求助搜索1WA 1T

P1092 [NOIP2004 提高组] 虫食算

@[靛涟](/space/show?uid=83903) ~~做我npy我就告诉你~~ 为什么你的程序会算出来4+9=9这种奇怪的东西(mod 12意义下)
by Smile_Cindy @ 2019-04-16 19:56:51


@[Alpha](/space/show?uid=87058) ~~窝也不知道啊QAQ~~ 估计又毒瘤了0.0
by 靛涟 @ 2019-04-16 20:16:19


@[靛涟](/space/show?uid=83903) 帮你恁到90分了
by Smile_Cindy @ 2019-04-16 20:19:04


90pts Code: ```cpp #include<bits/stdc++.h> using namespace std; int n; int m[200]; string a,b,c; int vis[220]; void dfs_2(int dep,int add); void dfs_1(int dep,int add){ /* cout<<"dfs_1("<<dep<<","<<add<<")"<<endl; for(int i='A';i<='A'+n-1;i++){ printf("%-3d ",m[i]); }*/ if(dep>n-1){ for(int i='A';i<='A'+n-1;i++){ printf("%d ",m[i]); } cout<<endl;/**/ exit(0); } if(m[a[dep]]>-1){ dfs_2(dep,add); return; } // cout<<endl; 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){ /* cout<<"dfs_2("<<dep<<","<<add<<")"<<endl; for(int i='A';i<='A'+n-1;i++){ printf("%-3d ",m[i]); } cout<<endl;*/ int &p1=m[a[dep]],&p2=m[b[dep]],ans=m[c[dep]]; if(p2>-1){ if((p1+p2+add)%n==m[c[dep]]){ dfs_1(dep+1,(p1+p2+add)/n); } else if(m[c[dep]]==-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=i; if((p1+p2+add)%n==m[c[dep]]){ dfs_1(dep+1,(p1+p2+add)/n); } else if(m[c[dep]]==-1 && !vis[(p1+p2+add)%n]){ ans=m[c[dep]]=(p1+p2+add)%n; 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=-1; } } } int main(){ cin>>n; cin>>a>>b>>c; reverse(a.begin(),a.end()); reverse(b.begin(),b.end()); reverse(c.begin(),c.end()); for(int i='A';i<='Z';i++) m[i]=-1; dfs_1(0,0); return 0; } ```
by Smile_Cindy @ 2019-04-16 20:19:25


@[靛涟](/space/show?uid=83903) 100分了~~做我npy~~ ```cpp #include<bits/stdc++.h> using namespace std; int n; int m[200]; string a,b,c; int vis[220]; void dfs_2(int dep,int add); bool cut() { for(int i=0;i<n;i++) { if(m[a[i]]==-1 || m[b[i]]==-1 || m[c[i]]==-1)continue; if((m[a[i]]+m[b[i]])%n!=m[c[i]] && (m[a[i]]+m[b[i]]+1)%n!=m[c[i]])return true; } return false; } void dfs_1(int dep,int add){ if(cut())return; /* cout<<"dfs_1("<<dep<<","<<add<<")"<<endl; for(int i='A';i<='A'+n-1;i++){ printf("%-3d ",m[i]); }*/ if(dep>n-1){ for(int i='A';i<='A'+n-1;i++){ printf("%d ",m[i]); } cout<<endl;/**/ exit(0); } if(m[a[dep]]>-1){ dfs_2(dep,add); return; } // cout<<endl; 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){ /* cout<<"dfs_2("<<dep<<","<<add<<")"<<endl; for(int i='A';i<='A'+n-1;i++){ printf("%-3d ",m[i]); } cout<<endl;*/ int &p1=m[a[dep]],&p2=m[b[dep]],ans=m[c[dep]]; if(p2>-1){ if((p1+p2+add)%n==m[c[dep]]){ dfs_1(dep+1,(p1+p2+add)/n); } else if(m[c[dep]]==-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=i; if((p1+p2+add)%n==m[c[dep]]){ dfs_1(dep+1,(p1+p2+add)/n); } else if(m[c[dep]]==-1 && !vis[(p1+p2+add)%n]){ ans=m[c[dep]]=(p1+p2+add)%n; vis[(p1+p2+add)%n]=1; dfs_1(dep+1,(p1+p2+add)/n); ans=m[c[dep]]=-1; vis[(p1+p2+add)%n]=0; } vis[i]=0; p2=-1; } } } int main(){ cin>>n; cin>>a>>b>>c; reverse(a.begin(),a.end()); reverse(b.begin(),b.end()); reverse(c.begin(),c.end()); for(int i='A';i<='Z';i++) m[i]=-1; dfs_1(0,0); return 0; } ```
by Smile_Cindy @ 2019-04-16 20:34:10


@[靛涟](/space/show?uid=83903) 人呢?
by Smile_Cindy @ 2019-04-16 20:36:20


@[Alpha](/space/show?uid=87058) 好...好厉害QAQ【发出肥宅羡慕的声音】
by 靛涟 @ 2019-04-16 20:54:07


@[靛涟](/space/show?uid=83903) 请问,您为什么要强调您是妹子呢
by Smile_Cindy @ 2019-04-16 21:09:28


@[Alpha](/space/show?uid=87058) luogu不都是可爱的妹子吗qwq
by 靛涟 @ 2019-04-16 21:51:39


@[骆钿皓](/space/show?uid=40403) 因为人类的本质是复读机
by S_C_Yesterday @ 2019-07-20 08:08:04


上一页 | 下一页