洛谷——P1328 生活大爆炸版石头剪刀布
题目描述
石头剪刀布是常见的猜拳游戏:石头胜剪刀,剪刀胜布,布胜石头。如果两个人出拳一 样,则不分胜负。在《生活大爆炸》第二季第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 生活大爆炸版石头剪刀布相关推荐
- 洛谷P1328生活大爆炸版石头剪刀布
题目链接:https://www.luogu.org/problemnew/show/P1328 转载于:https://www.cnblogs.com/LITTLESUNwl/p/10420660. ...
- 【洛谷】P1328 [NOIP2014 提高组] 生活大爆炸版石头剪刀布(详细代码)
[洛谷]石头剪刀布是常见的猜拳游戏:石头胜剪刀,剪刀胜布,布胜石头.如果两个人出拳一 样,则不分胜负.在<生活大爆炸>第二季第8集中出现了一种石头剪刀布的升级版游戏. 1.[题目描述] 2 ...
- 洛谷 P1328 [NOIP2014 提高组] 生活大爆炸版石头剪刀布
题目链接:P1328 [NOIP2014 提高组] 生活大爆炸版石头剪刀布 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题目描述 石头剪刀布是常见的猜拳游戏:石头胜剪刀,剪刀胜布 ...
- 模拟——生活大爆炸版石头剪刀布(洛谷 P1328)
模拟算法指的是让程序完整地按照题目叙述的方式运行得到答案! 此题选自洛谷P1328 用if或是switch等来判断,情况实在太多了,特别麻烦. 所以这里采用取巧的办法! 由于是两个人,所以用二维数组存 ...
- 洛谷 P1328 [NOIP2014 提高组] 生活大爆炸版石头剪刀布 题解 C/C++
思路如下 方法一:if else 直接模拟 方法二:初始化一个二维数组 输和平记为0,赢记为1 直接索引 //P1328 [NOIP2014 提高组] 生活大爆炸版石头剪刀布 //#define LO ...
- 2021-08-14 《 生活大爆炸版石头剪刀布》P1328
原题描述: 题目描述 石头剪刀布是常见的猜拳游戏:石头胜剪刀,剪刀胜布,布胜石头.如果两个人出拳一 样,则不分胜负.在<生活大爆炸>第二季第8集中出现了一种石头剪刀布的升级版游戏. 升级 ...
- 【NOIP2014】生活大爆炸版石头剪刀布
[NOIP2014]生活大爆炸版石头剪刀布 石头剪刀布是常见的猜拳游戏:石头胜剪刀,剪刀胜布,布胜石头.如果两个人出拳一 样,则不分胜负.在<生活大爆炸>第二季第 8 集中出现了一种石头剪 ...
- noip2014 生活大爆炸版 石头剪刀布 (模拟)
P1905生活大爆炸版 石头剪刀布 Accepted 标签:模拟NOIP提高组2014 描述 石头剪刀布是常见的猜拳游戏:石头胜剪刀,剪刀胜布,布胜石头.如果两个人出拳一 样,则不分胜负.在<生 ...
- OI-wiki 算法基础 模拟 NOIP2014 生活大爆炸版石头剪刀布 python
OI-wiki 算法基础 模拟 https://oi-wiki.org/basic/simulate/ 习题答案 NOIP2014 生活大爆炸版石头剪刀布 python https://uoj.ac/ ...
最新文章
- Linux下定时切割Mongodb数据库日志并删除指定天数前的日志记录(转)
- python构造icmp数据包_如何在python中构造ICMP数据包
- CloudCC: 智能CRM究竟能否成为下一个行业风口?
- 分离数据库(Detach database).
- 使用双重循环,输出数字金字塔
- tcs标准编写软件_【公益培训】知你所需 | 标准编写格式及TCS模板应用线上公益培训...
- java乱码解决方法
- SAP License:2021年:传统ERP丧钟响起
- PHP-线程安全与非线程安全版本的区别
- 让员工、用户粉丝化,从选好社区软件开始
- Linux基础——Linux 基本指令 touch, cp 和 mv
- android播放音频的格式,android 音频播放_android ios 音频格式_android 播放网络音频...
- Spring tool suite修改主题
- 黑莓手机刷Linux系统,黑莓Priv系统刷机包下载及一键刷机方法步骤教程
- UE4 虚幻引擎 引用第三方库lib文件
- 网吧服务器系统安装,网吧服务器和客户端安装教程
- mingw socket编程
- 这个 bug,硬是让我折腾了一周
- iOS 开发 code sign 代码签名深入剖析
- 【剑指offer】JZ55 二叉树的深度 python
热门文章
- STL算法学习-- 算法分类
- 计算机网络 | 网络层 :IP协议详解
- Linux 进程间通信:管道、共享内存、消息队列、信号量
- Python 的 sys 模块常用方法
- 干趴面试官系列 | 请你简述一下Kafka中的分区分配
- 音视频技术开发周刊 | 239
- 共享经济模式下的边缘计算——PPIO边缘云 laaS技术实践分享
- 即构科技:解决行业痛点,以MSDN为基础构建全球实时音视频通信云
- Google 2020游戏开发者峰会回顾、比尔•盖茨的夏日书单、Libaom 2.0.0发布等|Decode the Week...
- 微软 VSCode IDE 源码分析揭秘