题目描述

石头剪刀布是常见的猜拳游戏:石头胜剪刀,剪刀胜布,布胜石头。如果两个人出拳一 样,则不分胜负。在《生活大爆炸》第二季第8集中出现了一种石头剪刀布的升级版游戏。

升级版游戏在传统的石头剪刀布游戏的基础上,增加了两个新手势:

斯波克:《星际迷航》主角之一。

蜥蜴人:《星际迷航》中的反面角色。

这五种手势的胜负关系如表一所示,表中列出的是甲对乙的游戏结果。

现在,小 A小 B尝试玩这种升级版的猜拳游戏。已知他们的出拳都是有周期性规律的,但周期长度不一定相等。例如:如果小A以“石头-布-石头-剪刀-蜥蜴人-斯波克”长度为 66 的周期出拳,那么他的出拳序列就是“石头-布-石头-剪刀-蜥蜴人-斯波克-石头-布-石头-剪刀-蜥蜴人-斯波克-......”,而如果小B以“剪刀-石头-布-斯波克-蜥蜴人”长度为 55 的周期出拳,那么他出拳的序列就是“剪刀-石头-布-斯波克-蜥蜴人-剪刀-石头-布-斯波克-蜥蜴人-......”

已知小 A小 B 一共进行 NN 次猜拳。每一次赢的人得 11 分,输的得 00 分;平局两人都得 00 分。现请你统计 NN次猜拳结束之后两人的得分。

输入输出格式

输入格式:

第一行包含三个整数:N,N_A,N_BN,NA​,NB​,分别表示共进行 NN 次猜拳、小 A出拳的周期长度,小 B 出拳的周期长度。数与数之间以一个空格分隔。

第二行包含 N_ANA​ 个整数,表示小 A出拳的规律,第三行包含 N_BNB​ 个整数,表示小 B 出拳的规律。其中,00 表示“剪刀”,11 表示“石头”,22 表示“布”,33 表示“蜥蜴人”,44表示“斯波克”。数与数之间以一个空格分隔。

输出格式:

输出一行,包含两个整数,以一个空格分隔,分别表示小 A小 B的得分。

输入输出样例

输入样例#1: 复制

10 5 6
0 1 2 3 4
0 3 4 2 1 0

输出样例#1: 复制

6 2

输入样例#2: 复制

9 5 5
0 1 2 3 4
1 0 3 2 4

输出样例#2: 复制

4 4

说明

对于100\%100%的数据,0 < N \leq 200, 0 < N_A \leq 200, 0 < N_B \leq 2000<N≤200,0<NA​≤200,0<NB​≤200 。

AC代码:

#include<iostream>
using namespace std;int n, na, nb; //N次猜拳,A周期,B周期
int sa = 0, sb = 0; //两人的得分
int pa[200+10], pb[200+10]; //出圈周期int main()
{scanf("%d%d%d", &n, &na, &nb);fill(pa,pa+na,-1);fill(pb,pb+nb,-1);for(int i = 0; i < na; i++){scanf("%d", &pa[i]);}for(int i = 0; i < nb; i++){scanf("%d", &pb[i]);}for(int i = 0; i < n; i++){int qa = pa[i%na]; //a出的拳int qb = pb[i%nb]; //b出的拳if(qa == 0 && (qb == 2 || qb == 3)) sa++;else if(qb == 0 && (qa == 2 || qa == 3)) sb++;if(qa == 1 && (qb == 0 || qb == 3)) sa++;else if(qb == 1 && (qa == 0 || qa == 3)) sb++;if(qa == 2 && (qb == 1 || qb == 4)) sa++;else if(qb == 2 && (qa == 1 || qa == 4)) sb++;if(qa == 3 && (qb == 4 || qb == 2)) sa++;else if(qb == 3 && (qa == 4 || qa == 2)) sb++;if(qa == 4 && (qb == 0 || qb == 1)) sa++;else if(qb == 4 && (qa == 0 || qa == 1)) sb++;}printf("%d %d", sa, sb);return 0;
}

别人的神级代码:

作者:洛谷——yzzxliuchao

#include <bits/stdc++.h>
using namespace std;
const int MAXN = 200 + 10;
int n, na, nb, a[MAXN], b[MAXN], cnta, cntb;
int vs[5][5] = {{0,0,1,1,0},{1,0,0,1,0},{0,1,0,0,1},{0,0,1,0,1},{1,1,0,0,0}}; //得分表的处理
int main()
{cin >> n >> na >> nb;for(int i = 0; i < na; i++) cin >> a[i];for(int i = 0; i < nb; i++) cin >> b[i];for(int i = 0; i < n; i++){cnta += vs[a[i % na]][b[i % nb]]; //周期循环 cntb += vs[b[i % nb]][a[i % na]];}cout << cnta << " " << cntb << endl;return 0;
}

原因:对得分表的处理很巧妙;

洛谷——P1328 生活大爆炸版石头剪刀布相关推荐

  1. 洛谷P1328生活大爆炸版石头剪刀布

    题目链接:https://www.luogu.org/problemnew/show/P1328 转载于:https://www.cnblogs.com/LITTLESUNwl/p/10420660. ...

  2. 【洛谷】P1328 [NOIP2014 提高组] 生活大爆炸版石头剪刀布(详细代码)

    [洛谷]石头剪刀布是常见的猜拳游戏:石头胜剪刀,剪刀胜布,布胜石头.如果两个人出拳一 样,则不分胜负.在<生活大爆炸>第二季第8集中出现了一种石头剪刀布的升级版游戏. 1.[题目描述] 2 ...

  3. 洛谷 P1328 [NOIP2014 提高组] 生活大爆炸版石头剪刀布

    题目链接:P1328 [NOIP2014 提高组] 生活大爆炸版石头剪刀布 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题目描述 石头剪刀布是常见的猜拳游戏:石头胜剪刀,剪刀胜布 ...

  4. 模拟——生活大爆炸版石头剪刀布(洛谷 P1328)

    模拟算法指的是让程序完整地按照题目叙述的方式运行得到答案! 此题选自洛谷P1328 用if或是switch等来判断,情况实在太多了,特别麻烦. 所以这里采用取巧的办法! 由于是两个人,所以用二维数组存 ...

  5. 洛谷 P1328 [NOIP2014 提高组] 生活大爆炸版石头剪刀布 题解 C/C++

    思路如下 方法一:if else 直接模拟 方法二:初始化一个二维数组 输和平记为0,赢记为1 直接索引 //P1328 [NOIP2014 提高组] 生活大爆炸版石头剪刀布 //#define LO ...

  6. 2021-08-14 《 生活大爆炸版石头剪刀布》P1328

     原题描述: 题目描述 石头剪刀布是常见的猜拳游戏:石头胜剪刀,剪刀胜布,布胜石头.如果两个人出拳一 样,则不分胜负.在<生活大爆炸>第二季第8集中出现了一种石头剪刀布的升级版游戏. 升级 ...

  7. 【NOIP2014】生活大爆炸版石头剪刀布

    [NOIP2014]生活大爆炸版石头剪刀布 石头剪刀布是常见的猜拳游戏:石头胜剪刀,剪刀胜布,布胜石头.如果两个人出拳一 样,则不分胜负.在<生活大爆炸>第二季第 8 集中出现了一种石头剪 ...

  8. noip2014 生活大爆炸版 石头剪刀布 (模拟)

    P1905生活大爆炸版 石头剪刀布 Accepted 标签:模拟NOIP提高组2014 描述 石头剪刀布是常见的猜拳游戏:石头胜剪刀,剪刀胜布,布胜石头.如果两个人出拳一 样,则不分胜负.在<生 ...

  9. OI-wiki 算法基础 模拟 NOIP2014 生活大爆炸版石头剪刀布 python

    OI-wiki 算法基础 模拟 https://oi-wiki.org/basic/simulate/ 习题答案 NOIP2014 生活大爆炸版石头剪刀布 python https://uoj.ac/ ...

最新文章

  1. Linux下定时切割Mongodb数据库日志并删除指定天数前的日志记录(转)
  2. python构造icmp数据包_如何在python中构造ICMP数据包
  3. CloudCC: 智能CRM究竟能否成为下一个行业风口?
  4. 分离数据库(Detach database).
  5. 使用双重循环,输出数字金字塔
  6. tcs标准编写软件_【公益培训】知你所需 | 标准编写格式及TCS模板应用线上公益培训...
  7. java乱码解决方法
  8. SAP License:2021年:传统ERP丧钟响起
  9. PHP-线程安全与非线程安全版本的区别
  10. 让员工、用户粉丝化,从选好社区软件开始
  11. Linux基础——Linux 基本指令 touch, cp 和 mv
  12. android播放音频的格式,android 音频播放_android ios 音频格式_android 播放网络音频...
  13. Spring tool suite修改主题
  14. 黑莓手机刷Linux系统,黑莓Priv系统刷机包下载及一键刷机方法步骤教程
  15. UE4 虚幻引擎 引用第三方库lib文件
  16. 网吧服务器系统安装,网吧服务器和客户端安装教程
  17. mingw socket编程
  18. 这个 bug,硬是让我折腾了一周
  19. iOS 开发 code sign 代码签名深入剖析
  20. 【剑指offer】JZ55 二叉树的深度 python

热门文章

  1. STL算法学习-- 算法分类
  2. 计算机网络 | 网络层 :IP协议详解
  3. Linux 进程间通信:管道、共享内存、消息队列、信号量
  4. Python 的 sys 模块常用方法
  5. 干趴面试官系列 | 请你简述一下Kafka中的分区分配
  6. 音视频技术开发周刊 | 239
  7. 共享经济模式下的边缘计算——PPIO边缘云 laaS技术实践分享
  8. 即构科技:解决行业痛点,以MSDN为基础构建全球实时音视频通信云
  9. Google 2020游戏开发者峰会回顾、比尔•盖茨的夏日书单、Libaom 2.0.0发布等|Decode the Week...
  10. 微软 VSCode IDE 源码分析揭秘