洛谷P1328 [NOIP2014 提高组] 生活大爆炸版石头剪刀布
题目链接:https://www.luogu.com.cn/problem/P1328
hahahha,要我说,就是绝世大水题(我直接暴力模拟出来了hahaha),总体思路非常简单,就是模拟一下就行。
无非是多添了两个新的手势——斯波克和蜥蜴人,我们在本子上模拟一下,可以得出一下结论:
除了最基本的剪刀石头布的大小,我们还可以得出:
(1).剪刀克蜥蜴人
(2).斯波克 克剪刀
(3).石头克蜥蜴人
(4).斯波克 克石头
(5).蜥蜴人克布
(6).布克斯波克
好了,得出以上关系,再根据题意相应的输入就好啦;
AC代码及注意事项如下所示:
1 #include<bits/stdc++.h> 2 using namespace std; 3 int a[210],b[210];//分别是A和B的手势 4 int ans,bns;//分别记录A与B的得分情况 5 int j;//记录B的下标 6 int main() 7 { 8 int n,n1,n2; 9 scanf("%d %d %d",&n,&n1,&n2); 10 for(int i=0;i<n1;i++) 11 { 12 scanf("%d",&a[i]); 13 } 14 for(int i=0;i<n2;i++) 15 { 16 scanf("%d",&b[i]); 17 } 18 int i=0;//A的下标 19 for(int f=0;f<n;f++)//总次数 20 { 21 //条件大判断哦 22 if(a[i]==0&&b[j]==1)bns++; 23 if(a[i]==0&&b[j]==2)ans++; 24 if(a[i]==0&&b[j]==3)ans++; 25 if(a[i]==0&&b[j]==4)bns++; 26 if(a[i]==1&&b[j]==0)ans++; 27 if(a[i]==1&&b[j]==2)bns++; 28 if(a[i]==1&&b[j]==3)ans++; 29 if(a[i]==1&&b[j]==4)bns++; 30 if(a[i]==2&&b[j]==0)bns++; 31 if(a[i]==2&&b[j]==1)ans++; 32 if(a[i]==2&&b[j]==3)bns++; 33 if(a[i]==2&&b[j]==4)ans++; 34 if(a[i]==3&&b[j]==0)bns++; 35 if(a[i]==3&&b[j]==1)bns++; 36 if(a[i]==3&&b[j]==2)ans++; 37 if(a[i]==3&&b[j]==4)ans++; 38 if(a[i]==4&&b[j]==0)ans++; 39 if(a[i]==4&&b[j]==1)ans++; 40 if(a[i]==4&&b[j]==2)bns++; 41 if(a[i]==4&&b[j]==3)bns++; 42 i=(i+1)%n1;//如果要是满了一个周期就进入下一个周期 43 j=(j+1)%n2;//同上 44 } 45 printf("%d %d",ans,bns); 46 return 0; 47 }
本文来自博客园,作者:江上舟摇,转载请注明原文链接:https://www.cnblogs.com/LQS-blog/p/15885211.html