其它题目

题目

RC-u3 跑团机器人

在桌面角色扮演游戏(TRPG,俗称“跑团”)中,玩家需要掷出若干个骰子,根据掷出的结果推进游戏进度。在线上同样可以跑团,方法是由玩家们向机器人发出指令,由机器人随机产生每个需要掷出的骰子的结果。

玩家向机器人发出的指令是一个仅涉及加法和减法的表达式,即对若干个数字进行一系列加法或减法计算。这些数字可以是直接给出的非负整数(数字不超过 1000),也可以是若干个骰子掷出的结果。

“掷骰子”这个动作对应的指令格式为 xdy,表示摇动 x 个 y 面的骰子(1≤x≤1000,2≤y≤1000)。当 x 为 1 时,1 可以省略。

例如指令 2d3+3-d4的意思是:先掷出 2 个 3 面骰子(你不必考虑现实中是否存在这样的骰子),不妨假设结果为 1 和 3,则 2d3的结果就是两个骰子的面值之和 4;然后计算 4 + 3,得到结果为 7;再掷出 1 个 4 面骰子,不妨假设结果为 2,则计算 7 - 2 得到最终结果 5。

本题就请你计算玩家输入的指令里,不同种类的骰子需要掷出几个,以及可能得到的结果在什么区间范围内。

输入格式:
输入在一行中给出一条符合题目描述的玩家输入机器人的指令。题目保证指令长度不超过 2∗1e4。

输出格式:
首先输出不同种类的骰子分别需要掷出几个。每种骰子的信息占一行,依次输出骰子的面数和投掷的数量,按面数从小到大输出。

输入指令保证至少有一个骰子需要掷出。

最后一行输出两个数,表示根据输入指令可以得到的最小结果和最大结果。

同一行数字间以 1 个空格分隔,行首尾不得有多余空格。

输入样例:

d6+3d5+2-2d3+2d5

输出样例:

3 2
5 5
6 1
2 31

题解

运算符只有+/-, 所以我们不用考虑运算符的优先级, 用循环来完成即可.

基本的思想是每次循环处理一个指令(xdy)以及得到下一个指令的符号(正负), 但要注意操作数除了指令还有常量

在代码注释里进行更详细的讲解

AC代码(详细注释)


//
// Created by trudbot on 2022/7/12.
//#include <bits/stdc++.h>
using namespace std;
map<int, int> num;//存储每种骰子被掷的总数
int Max, Min;//点数的最大最小值void Solution(string str)
{//l指向当前要处理指令的第一个字符, sign为当前指令的正负号, 1为正, -1为负int r = str.length()-1, l = 0, sign = 1;while(l <= r){int x = 0, y = 0;//读取xwhile(l<=r && str[l] != 'd' && str[l] != '+' && str[l] != '-')x = x*10 + str[l++] - '0';//读取完x后停止在d字符, 说明是一个指令if(str[l] == 'd'){if(x == 0) x = 1;//d前面没有字符时, x默认为1l++;//读取ywhile(l<=r && str[l] != '+' && str[l] != '-')y = y*10 + str[l++] - '0';num[y] += x;//y面骰子的掷数增加xif(sign == 1){//为正时, Max加上最大数, Min加上最小数Max += y*x;//每次都掷y点Min += x;//每次都掷1点}else//为负时, 同上{Max -= x;Min -= y*x;}}else//读取完x后停止在+/-或越界, 说明是一个常量, 乘上符号直接加到Max, Min里即可{Max += sign*x;Min += sign*x;}if(l <= r)//此时l要么越界, 要么停在+/-sign = str[l++] == '+' ? 1 : -1;//判断下一个操作对象的符号, l后移指向它的第一个字符}
}int main() {string str;cin >> str;Solution(str);for(auto i : num){cout << i.first << " " << i.second << endl;}cout << Min << " " << Max << endl;return 0;
}


如上代码可AC, 有任何问题欢迎讨论交流

2022 RoboCom 世界机器人开发者大赛-本科组(省赛)-- 第三题 跑团机器人 (已完结)相关推荐

  1. 2022 RoboCom 世界机器人开发者大赛-本科组(省赛)挨打记录

    总结: 在pintia平台做题千万得早点做会的题,要不然等到最后全是疯狂提交撞数据骗分的,最后五分钟,提交一次题要等前面6900多人,根本来不及. 多看板子少摸鱼 学校实验室是真滴爽 做题连接 登录签 ...

  2. 2022 RoboCom 世界机器人开发者大赛-本科组(省赛) CAIP 完整版题解

    文中代码均可AC, 有任何问题欢迎在评论区留言讨论 文章目录 RC-u1 不要浪费金币 题解 AC代码 RC-u2 智能服药助手 题解 AC代码(带注释) RC-u3 跑团机器人 题解 AC代码(详细 ...

  3. 2022 RoboCom 世界机器人开发者大赛-本科组(省赛)

    文章目录 1.不要浪费金币 2.智能服药助手 3.跑团机器人 4.攻略分队 5.树与二分图 1.不要浪费金币 哲哲最近在玩一个游戏,击杀怪物能获得金币 -- 这里记击杀第 i 个怪物获得的金币数量为 ...

  4. 2021 RoboCom 世界机器人开发者大赛-本科组(初赛)【完结】

    看群友在水这个比赛玩玩,于是也去打了一下重现赛. 事实证明,群友轻松AK,而我只会暴力. 总的难度就是PAT甲的难度吧,数据很不错,恶心的一批. 补题完结 2021RoboCom机器人开发者大赛官方题 ...

  5. 2021 RoboCom 世界机器人开发者大赛-本科组(初赛)

    文章目录 比赛介绍 7-1 懂的都懂(20分) 7-2 芬兰木棋(25分) 7-3 打怪升级(25分) 7-4 疫情防控(30分) 比赛介绍 比赛信息 比赛官网:https://www.robocom ...

  6. 2022 RoboCom 世界机器人开发者大赛-本科组(省赛)T4, T5

    RC-u4 攻略分队 题意 把 6 支队伍分成两组,把所有的可能方案按照下面的筛选方式找到最佳方案: 思路 比较简洁的一个方法是,将每一条方案中的元素都存储到结构体中,然后在结构体中重载运算符,根据给 ...

  7. 2022 RoboCom 世界机器人开发者大赛-本科组(省赛)RC-u4 攻略分队 (已完结)

    其它题目 题目 RC-u4 攻略分队 副本是游戏里的一个特色玩法,主要为玩家带来装备.道具.游戏资源的产出,满足玩家的游戏进程. 在 MMORPG<最终幻想14>里,有一个攻略人数最大达到 ...

  8. 2022 RoboCom 世界机器人开发者大赛-本科组(国赛)

    文章目录 1.智能红绿灯 2.女王的大敕令 3.战利品分配 4.变牛的最快方法 5.养老社区 1.智能红绿灯 为了最大化通行效率同时照顾老年人穿行马路,在某养老社区前,某科技公司设置了一个智能红绿灯. ...

  9. 2022 RoboCom 世界机器人开发者大赛-本科组(省赛)-- 第五题 树与二分图 (已完结)

    其它题目 题目 RC-u5 树与二分图 设 G=(V,E) 是一个无向图,如果顶点集合 V 可分割为两个互不相交的子集 (A,B),并且每条边 (i,j)∈E 的两个端点 i 和 j 分别属于这两个不 ...

最新文章

  1. Linux中grep命令 常用选项
  2. 了解TCP的三次握手和四次挥手
  3. Node.js -- Stream 使用小例 ( 流运用 :读取、写入、写出、拷贝)
  4. (转)淘淘商城系列——分布式文件系统FastDFS
  5. java yyyy-mm-dd 日期格式_Java中的日历日期为yyyy-MM-dd格式
  6. java xml解析器_Java XML解析器
  7. Windows环境下安装python+tensorflow
  8. 兄弟9150cdn换硒鼓清零抹粉_兄弟9150cdn换硒鼓清零抹粉_兄弟打印机粉盒硒鼓怎么清零?这里有详细的步骤......
  9. RT-Thread (3) 为RTT增加SP485驱动||RTT UART设备
  10. 蓄电池充电方法和一张原理图
  11. 笔记本键盘有几个键失灵了怎么办?
  12. phyton计算每天进步的力量
  13. 快速了解云数据库RDS
  14. 操作OMF(Oracle Managed Files,Oracle管理的文件)
  15. 流量卡物联网卡管理平台源码|PHP管理系统源码 成品可商用系统
  16. UniApp 小程序实现PDF电子签名 拖拽
  17. 雷军:小米创业背后的一些故事和体会
  18. HTML显示磁盘容量,导致:IOError:[Errno 28]设备上没有剩余空间:磁盘上有很多空间的’../results/32766.html’...
  19. 凡是函数中未指定存储类型_函数中未指定存储类别的局部变量,其隐含的存储类别为()...
  20. 转:条件型 CORS 响应下因缺失 Vary: Origin 导致的缓存错乱问题

热门文章

  1. linux用户空间寄存器,除了写一个驱动,还有什么办法在linux用户空间访问寄存器?...
  2. 25道让人流口水的美味菜谱
  3. 无人机matlab程序,无人机高度基于matlab卡尔曼滤波程序 数据融合
  4. tilemap 导入unity_unity的Tilemap学习笔记
  5. 2019顺丰科技笔试
  6. JS实现淘宝提取关键词搜索
  7. 【微服务 从0开始 】Spring Cloud 简单搭建一个微服务项目
  8. CS和BS的区别以及优缺点
  9. 渠道管理-经销商价格数字化管理的思路
  10. Draw Call是什么?