洛谷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 }
View Code

 

posted @ 2022-02-11 23:42  江上舟摇  阅读(145)  评论(0编辑  收藏  举报