试题 算法训练 生活大爆炸版石头剪刀布
资源限制
时间限制:1.0s 内存限制:128.0MB
问题描述
石头剪刀布是常见的猜拳游戏:石头胜剪刀,剪刀胜布,布胜石头。如果两个人出拳一样,则不分胜负。在《生活大爆炸》第二季第8集中出现了一种石头剪刀布的升级版游戏。升级版游戏在传统的石头剪刀布游戏的基础上,增加了两个新手势:
斯波克:《星际迷航》主角之一。
蜥蜴人:《星际迷航》中的反面角色。
这五种手势的胜负关系如表一所示,表中列出的是甲对乙的游戏结果
现在,小A和小B尝试玩这种升级版的猜拳游戏。已知他们的出拳都是有周期性规律的,但周期长度不一定相等。例如:如果小A以“石头-布-石头-剪刀-蜥蜴人-斯波克”长度为6的周期出拳,那么他的出拳序列就是“石头-布-石头-剪刀-蜥蜴人-斯波克-石头-布-石头-剪刀-蜥蜴人-斯波克-……”,而如果小B以“剪刀-石头-布-斯波克-蜥蜴人”长度为5的周期出拳,那么他出拳的序列就是“剪刀-石头-布-斯波克-蜥蜴人-剪刀-石头-布-斯波克-蜥蜴人-……”
已知小A和小B一共进行N次猜拳。每一次赢的人得1分,输的得0分;平局两人都得0分。现请你统计N次猜拳结束之后两人的得分。
输入格式
第一行包含三个整数:N,NA,NB,分别表示共进行N次猜拳、小A出拳的周期长度,小B出拳的周期长度。数与数之间以一个空格分隔。
第二行包含NA个整数,表示小A出拳的规律,第三行包含NB个整数,表示小B出拳的规律。其中,0表示“剪刀”,1表示“石头”,2表示“布”,3表示“蜥蜴人”, 4表示“斯波克”。数与数之间以一个空格分隔。
输出格式
输出一行, 包含两个整数,以一个空格分隔,分别表示小A、小B的得分。
样例输入
10 5 6
0 1 2 3 4
0 3 4 2 1 0
样例输出
6 2
样例输入
9 5 5
0 1 2 3 4
1 0 3 2 4
样例输出
4 4
数据说明
对于100%的数据,0 < N ≤ 200,0 < NA ≤ 200, 0 < NB ≤ 200。
思路解析:
- 先把A得分和A失分(即B得分)的情况写出来
- 找出相同点和不同点
- 找出相同点中的不同点
举例说明:当A[X]-B[Y]=-3的时候,在A得分的情况下:A[X]=0,即当同时满足A[X]-B[Y]=-3,且A[X]=0,这两个条件时,即A得分。
源程序:
#include<iostream>
using namespace std;
#define maxsize 10000
int a[maxsize];
int b[maxsize];
void init(int NA, int NB)//输入数据
{for (int i = 0; i < NA; i++)cin >> a[i];for (int i = 0; i < NB; i++)cin >> b[i];
}
void grade(int N,int NA,int NB)//输出两人的分数
{int sum1=0, sum2=0;int x, y, item;for (int i = 0; i < N; i++)//此处是猜拳N次{x = i%NA;//利用求余即可获得对应的编号y = i%NB;item = a[x] - b[y];//两者相见,根据上图所示,把A得分的条件和失分的条件写清楚即可。if (item > 0){if (item == 2 || (item == 1 && a[x] == 4) || (item == 3 && a[x] == 3))//此处为B得分的情况,sum2++;elsesum1++;}if (item < 0){if (item == -2 || (item == -3 && a[x] == 0) || (item == -1 && a[x] == 3))//A得分sum1++;elsesum2++;}}cout << sum1 << " " << sum2;
}
int main()
{int N, NA, NB;cin >> N >> NA >> NB;init(NA, NB);grade(N, NA, NB);
}
评测记录:
补充:
本题N指的是猜拳的次数,我开始的时候,以为N是猜拳的轮数,然后感觉和之前学习队列时候的题目差不多,要用到循环队列。后来发现测试的时候不对,又重新读了一遍题目,发现N是次数,好家伙这样更简单了许多。然后我就想着这样也没意思,我要做出比较真实的猜拳,于是我把题目改了一下:
- N为进行的轮数
- 两人出拳没有规律,即加入时间种子,根据系统时间产生随机数
最近我会把这道修改后的题目发表出来,感兴趣的可以看一下。
试题 算法训练 生活大爆炸版石头剪刀布相关推荐
- OI-wiki 算法基础 模拟 NOIP2014 生活大爆炸版石头剪刀布 python
OI-wiki 算法基础 模拟 https://oi-wiki.org/basic/simulate/ 习题答案 NOIP2014 生活大爆炸版石头剪刀布 python https://uoj.ac/ ...
- 2021-08-14 《 生活大爆炸版石头剪刀布》P1328
原题描述: 题目描述 石头剪刀布是常见的猜拳游戏:石头胜剪刀,剪刀胜布,布胜石头.如果两个人出拳一 样,则不分胜负.在<生活大爆炸>第二季第8集中出现了一种石头剪刀布的升级版游戏. 升级 ...
- 蓝桥杯试题 算法训练 Have You Ever Heard About the Word?
试题 算法训练 Have You Ever Heard About the Word? 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 一个字符串的子串是该字符串的一段连续子序列,如 ...
- 【NOIP2014】生活大爆炸版石头剪刀布
[NOIP2014]生活大爆炸版石头剪刀布 石头剪刀布是常见的猜拳游戏:石头胜剪刀,剪刀胜布,布胜石头.如果两个人出拳一 样,则不分胜负.在<生活大爆炸>第二季第 8 集中出现了一种石头剪 ...
- noip2014 生活大爆炸版 石头剪刀布 (模拟)
P1905生活大爆炸版 石头剪刀布 Accepted 标签:模拟NOIP提高组2014 描述 石头剪刀布是常见的猜拳游戏:石头胜剪刀,剪刀胜布,布胜石头.如果两个人出拳一 样,则不分胜负.在<生 ...
- 【洛谷】P1328 [NOIP2014 提高组] 生活大爆炸版石头剪刀布(详细代码)
[洛谷]石头剪刀布是常见的猜拳游戏:石头胜剪刀,剪刀胜布,布胜石头.如果两个人出拳一 样,则不分胜负.在<生活大爆炸>第二季第8集中出现了一种石头剪刀布的升级版游戏. 1.[题目描述] 2 ...
- C++试题 算法训练 相邻数对、画图
试题 算法训练 相邻数对 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 给定n个不同的整数,问这些数中有多少对整数,它们的值正好相差1. 输入格式 输入的第一行包含一个整数n,表示 ...
- 蓝桥杯试题 算法训练 印章
试题 算法训练 印章 C/C++ 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 共有n种图案的印章,每种图案的出现概率相同.小A买了m张印章,求小A集齐n种印章的概率. 输入格式 ...
- 试题 算法训练 翻转旋转变换
试题 算法训练 翻转旋转变换 资源限制 内存限制:256.0MB C/C++时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s 问题描述 现在有一张n行m列的由" ...
最新文章
- Spartan-6的MCB模块、GTP模块、PCIe端点模块
- “智能微尘”:助推物联网应用的关键
- 内容分发网络(CDN) 是什么
- mysql innodb和myisam_Mysql InnoDB和MyISAM的区别
- 标贝科技推出「留声机」TTS方案,高还原、个性化声效提升交互意愿
- CDC::Arc 汉化参数明说及举例
- 经典C语言编程100例——题目+答案代码(1-10)
- 自己做量化交易软件(30)小白量化实战4--动于阴末止于阳极
- 关于 java中的换行符
- 读取ISO15031协议数据流
- 可视化IDE低代码开发平台
- 【Sass/SCSS】我花4小时整理了的Sass的函数
- line-height绝对值和相对值的区别
- 前端程序员必须要懂的 UI 设计知识
- 我们把AI画图玩坏了,这60张图片又惊悚又可爱
- 电话销售技巧和话术(转)
- spring data jpa使用详解(推荐)
- 什么设备升级android9,三星设备安卓9.0升级路线图更新:共30款
- Windows10家庭版本开启Hyper-v虚拟机
- 学习JavaScript之前,这些知识你应该知道?
热门文章
- ASP.NET与.NET Framework和C#的关系
- 响铃:暴跌后仅有8倍PE,趣店为何还在跌跌不休?
- 苹果地图错误将驾车者导向沙漠:偏离70公里
- Hive学习笔记——parse
- C# 获取汉字拼音首字母(修正X问题,真正修正)
- 用深度学习做命名实体识别(二):文本标注工具brat
- 设计模式——观察者模式详解
- 计算机房设备搬迁协议,设备搬迁协议.docx
- 极客日报第 53 期:抖音将代替拼多多成为春晚独家红包合作伙伴;高通正研发 8cx 升级版处理器,对标苹果 M1;DuckDuckGo 日查询量首次突破 1 亿
- 试用一款开源的轻量级3D建模软件《Dust3D》