当前位置: 首页 > 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;
}

http://www.dtcms.com/a/216300.html

相关文章:

  • 冒泡排序:像煮汤一样让数字「冒泡」
  • 企业级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
  • SQLord: 基于反向数据生成和任务拆解的 Text-to-SQL 企业落地方案
  • sqli_labs第二十九/三十/三十一关——hpp注入
  • 【手写数据库核心揭秘系列】第9节 可重入的SQL解析器,不断解析Structure Query Language,语言翻译好帮手
  • [STM32学习笔记(九)]CubeMX项目使用系统定时器SysTick的中断服务函数进行定时
  • 《计算机组成原理》第 1 章 - 计算机系统概论
  • DAY38打卡
  • Python PyMySQL
  • 嵌入式开发学习日志(linux系统编程--进程(3)——线程)Day29
  • Ubuntu20.04系统安装,使用系统盘安装
  • AD-PCB--电子设计学习思路 DAY 1