当前位置: 首页 > news >正文

题目 3341: 蓝桥杯2025年第十六届省赛真题-抽奖

题目 3341: 蓝桥杯2025年第十六届省赛真题-抽奖
时间限制: 2s 内存限制: 192MB 提交: 415 解决: 105
题目描述
LQ 商场为了回馈广大用户,为在此消费的用户提供了抽奖机会:抽奖机有三个转轮,每个转轮上都分布有 n 个数字图案,标号为 1 ∼ n ,按照从 1 到 n 顺序转动,当转到第 n 个图案时会从第一个继续开始。奖项如下: 

1)三个相同的图案,积分 +200 ; 

2)两个相同的图案,积分 +100 ; 

3)三个数字图案,从左到右连续(例如 1, 2, 3 ),积分 +200 ; 

4)三个数字图案,经过顺序调整后连续(例如 2, 1, 3 或 3, 2, 1 ),积分 +100 ; 

抽奖机处于初始状态,三个转轮都处于第一个位置。每次开始抽奖,都会 产生三个对应的随机数 xi1, xi2, xi3 ,表示第 j 个转轮会向后转动 xi j 次停下。下 次抽奖时,转轮会从上一次转动后的位置开始继续转动。 注意,一次抽奖最多只能获得一次积分,如果同时命中多个奖项,以积分最大的那个奖项为准。 

请问,如果执行 m 次抽奖,总积分值是多少?

输入格式
输入的第一行包含一个正整数 n ,表示转轮大小。 

第二行包含 n 个正整数 a1, a2, · · · , an ,依次表示第一个转轮上的数字图案, 相邻整数之间使用一个空格分隔。 

第三行包含 n 个正整数 b1, b2, · · · , bn ,依次表示第二个转轮上的数字图案, 相邻整数之间使用一个空格分隔。 

第四行包含 n 个正整数 c1, c2, · · · , cn ,依次表示第三个转轮上的数字图案, 相邻整数之间使用一个空格分隔。 

第五行包含一个整数 m ,表示抽奖次数。

接下来 m 行,每行包含三个正整数 xi1, xi2, xi3 ,相邻整数之间使用一个空格分隔。

输出格式
输出一行包含一个整数表示答案,即 m 次抽奖累计获得的积分的值。

样例输入复制
4
3 2 4 1
2 2 2 2
4 3 0 9
3
4 4 4
3 1 1
40 39 2
样例输出复制
300
提示
【样例说明】 

三个转轮在初始状态下都在位置 1 。 

第一次抽奖,三个转轮都转动 4 次,都转一整圈到达位置 1 ,三个转轮上 的数字图案分别是 3、2、4 ,积分 +100 ; 

第二次抽奖,第一个转轮转动 3 次到达位置 4 ,第二个转轮转动 1 次到达 位置 2 ,第三个转轮转动 1 次到达位置 2 ,三个转轮上的数字图案分别是 1、 2、3 ,积分 +200 ; 

第三次抽奖,第一个转轮转动 40 次到达位置 4 ,第二个转轮转动 39 次到 达位置 1 ,第三个转轮转动 2 次到达位置 4 ,三个转轮上的数字图案分别是 1、 2、9 ,积分不增加。 

因此总积分为 300 。

【评测用例规模与约定】 

对于 20% 的评测用例,1 ≤ n ≤ 5 ,0 ≤ m ≤ 5 ; 

对于 40% 的评测用例,1 ≤ n ≤ 10 ,0 ≤ m ≤ 10 ; 

对于 60% 的评测用例,1 ≤ n ≤ 100 ,0 ≤ m ≤ 100 ; 

对于 80% 的评测用例,1 ≤ n ≤ 200 ,0 ≤ m ≤ 200 ; 

对于所有评测用例,1 ≤ n ≤ 103 ,0 ≤ m ≤ 103 ,0 ≤ ai , bi , ci ≤ 9 , 1 ≤ xi j ≤ 1000 。

1.分析

        模拟即可,由于取余,可以交换a[0]和a[n]的位置。

2.代码

#include<iostream>
#include<algorithm>
#include<vector>
#include<cmath>
using namespace std;
const int MAX = 1e3 + 10;
typedef long long LL;
int a[MAX], b[MAX], c[MAX],re[MAX];
int n,m, A = 1, B = 1, C = 1;
int s;
int main() {cin >> n;for (int i = 1; i <= n; i++) {cin >> a[i];}for (int i = 1; i <= n; i++) {cin >> b[i];}for (int i = 1; i <= n; i++) {cin >> c[i];}a[0] = a[n];b[0] = b[n];c[0] = c[n];cin >> m;while (m--) {int x, y, z;cin >> x >> y >> z;A = (A + x) % (n);re[0] = a[A];B = (B + y) % (n);re[1] = b[B];C = (C + z) % (n);re[2] = c[C];if (re[0]==re[1]&&re[1]==re[2]) {s += 200;}else if (re[0] == re[1] || re[1] == re[2] || re[0] == re[2]) {s += 100;}else if (re[0] + 1 == re[1] && re[1] + 1 == re[2]) {s += 200;}else {sort(re, re + 3);if (re[0] + 1 == re[1] && re[1] + 1 == re[2]) {s += 100;}}}cout << s << endl;return 0;
}

相关文章:

  • 冒泡排序:像煮汤一样让数字「冒泡」
  • 企业级RAG技术实战指南:从理论到落地的全景解析
  • 文件上传白名单绕过(图片马 - 图片二次渲染绕过)
  • 2025 吉林CCPC
  • 缩量资金迁徙下的短期博弈
  • C++11特性:可变参数模板
  • npm/yarn/pnpm安装时Sharp模块报错解决方法
  • Debian 系统 Python 开发全解析:从环境搭建到项目实战
  • 域控账号密码抓取
  • Debian 11之解决daemon.log与syslog文件占用空间过大问题
  • Spring Boot微服务架构(六):伪装的微服务有哪些问题?
  • 微服务及容器化设计--可扩展的架构设计
  • Vue组件技术全解析大纲
  • vue3 getcurrentinstance 用法
  • Ubuntu实现和主机的复制粘贴 VMware-Tools(open-vm-tools)
  • ​扣子Coze飞书多维表插件-查询数据
  • [图文]图6.3会计事项-Fowler分析模式的剖析和实现
  • WebSocket学习总结
  • MySQL数据库第一章
  • Introduction to SQL
  • vs2005做的网站转换为2012/今日最新抗疫数据
  • 咨询公司招聘条件/武汉seo网络营销推广
  • 免费建站网站 seo/网站建设费用明细表
  • 网站升级正在升级维护/百度推广营销方案
  • 网站后台怎么更新网站/天津seo优化排名
  • 日本做网站/关键词优化的策略有哪些