洛谷 1328 生活大爆炸版石头剪刀布(NOIp2014提高组)
【题解】
简单粗暴的模拟题。
1 #include<cstdio> 2 #include<algorithm> 3 #include<cstring> 4 #define LL long long 5 #define rg register 6 #define N 200010 7 using namespace std; 8 int n,ta,tb,a[N],b[N],ansa,ansb; 9 inline int read(){ 10 int k=0,f=1; char c=getchar(); 11 while(c<'0'||c>'9')c=='-'&&(f=-1),c=getchar(); 12 while('0'<=c&&c<='9')k=k*10+c-'0',c=getchar(); 13 return k*f; 14 } 15 inline int check(int a,int b){ 16 if(a==0){ 17 if(b==0) return 0; 18 else 19 if(b==2||b==3) return 1; 20 else return 2; 21 } 22 if(a==1){ 23 if(b==1) return 0; 24 else 25 if(b==0||b==3) return 1; 26 else return 2; 27 } 28 if(a==2){ 29 if(b==2) return 0; 30 else 31 if(b==1||b==4) return 1; 32 else return 2; 33 } 34 if(a==3){ 35 if(b==3) return 0; 36 else 37 if(b==2||b==4) return 1; 38 else return 2; 39 } 40 if(a==4){ 41 if(b==4) return 0; 42 else 43 if(b==0||b==1) return 1; 44 else return 2; 45 } 46 return 2; 47 } 48 int main(){ 49 n=read(); ta=read(); tb=read(); 50 for(rg int i=1;i<=ta;i++) a[i]=read(); 51 for(rg int i=1;i<=tb;i++) b[i]=read(); 52 for(rg int i=ta+1;i<=n;i++) a[i]=a[i-ta]; 53 for(rg int i=tb+1;i<=n;i++) b[i]=b[i-tb]; 54 // for(rg int i=1;i<=n;i++) printf("%d ",a[i]); puts(""); 55 // for(rg int i=1;i<=n;i++) printf("%d ",b[i]); puts(""); 56 for(rg int i=1;i<=n;i++){ 57 int tmp=check(a[i],b[i]); 58 if(tmp==1) ansa++; 59 else if(tmp==2) ansb++; 60 // printf("tmp=%d\n",tmp); 61 } 62 printf("%d %d\n",ansa,ansb); 63 return 0; 64 }