AtCoder Beginner Contest 351 C题解 Merge the balls

devtools/2024/9/23 11:18:25/

C题:Merge the balls

标签:栈
题意:给定 n n n个球,第 i i i个球的大小是 2 a i 2^{a_i} 2ai。轮流将这 n n n个球加到一个序列中,一开始序列为空。每加一个球,如果序列的最后一个球和倒数第二个球大小相同,就将这两个球移除,然后加入一个新球,新球的大小是这两个球大小之和。不断地进行操作直到序列最后两个球不同或者序列中只有一个球了停止,然后再不断地加入球,直到这 n n n个球都被加入了。求最后序列中剩下的球的个数。
题解:我们分析下样例,比如以下这个样例:
7
2 1 1 3 5 3 3
加入到第 3 个球的时候,形成 2 1 1,最后两个相同了,删掉这两个,然后加入一个 2,形成 2 2;最后两个又相同了,删掉这两个,然后加入一个 3。
加入第 4 个球的时候,形成 3 3,最后两个相同了,删掉这两个,然后加入一个 4,形成 4。
加入第 5 个球,形成 4 5。
加入第 6、7 个球,形成 4 5 3 3,最后两个相同了,删掉最后两个,加入一个 4。
所以最后序列中剩下 4 5 4。
注意:题目中输入的是球的指数,如果两个球大小相同都是 2 a i 2^{a_i} 2ai,那么相加就是 2 ∗ 2 a i = 2 a i + 1 2*2^{a_i}=2^{a_{i+1}} 22ai=2ai+1
我们可以通过 模拟不断地将最后的两个拿出来,然后进行合并,塞一个新的放到栈中的这个流程,不断进行这个操作,直到最后球都放完了,最终输出栈的大小即可。
代码

#include <bits/stdc++.h>
using namespace std;stack<int> s;
int n, x;int main() {cin >> n;for (int i = 1; i <= n; i++) {cin >> x;s.push(x);while (s.size() >= 2) {int a = s.top(); s.pop();int b = s.top(); s.pop();if (a != b) {s.push(b);s.push(a);break;} else {s.push(a + 1);}}}cout << s.size() << endl;return 0;
}

http://www.ppmy.cn/devtools/26438.html

相关文章

JavaScript云LIS系统源码 B/S架构+SaaS模式+SQLserver可扩展性强,商业运营级区域医疗云LIS系统源码

JavaScript云LIS系统源码 B/S架构SaaS模式SQLserver可扩展性强&#xff0c;商业运营级区域医疗云LIS系统源码 云LIS&#xff08;云实验室信息管理系统&#xff09;是一种结合了计算机网络化信息系统的技术&#xff0c;它无缝嵌入到云HIS&#xff08;医院信息系统&#xff09;…

unity-C#调用百度千帆AppBuilder的OpenApi

目录 功能描述准备工作百度智能云账号创建应用编辑应用创建Api秘钥Api调用流程unity代码Unitywebrequest非流式流式注意事项 Restsharp 功能描述 使用百度千帆AppBuilder平台,通过api调用的方式实现AI大模型对话功能(文字) 准备工作 百度智能云账号 请自行在百度智能云进行…

【数值优化基础 (自动驾驶)】—— 知识点(方便回顾)

笔记&#xff1a;机器人学中的数值优化基础 数值优化简介 1.优化问题 min f(x) s.t.g(x)<0 h(x)0 假设&#xff1a;&#xff08;1&#xff09;目标函数有下界&#xff08;2&#xff09;下水平集不能无界 2.凸包问题&#xff1a;给定点集&#xff0c;求构成凸包的点 3.常见…

【AI工具合集】图片、文本、音视频工具与A I岗位面试资料

1、AI 工具集合 全球最新热门 Al 工具&#xff0c; AI 工具整合包&#xff0c;可以下载并在 Windows 系统私有化本地化运行&#xff0c;包括图片、文本、视频、音频等工具资源&#xff0c;按照功能、业务和行业来分类。 1.1 AI 图片工具 MoneyPrinter&#xff1a;一键生成短…

【UnityRPG游戏制作】Unity_RPG项目之场景环境搭建和解析

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;Uni…

搭建基础镜像(centos+jdk+tomcat)

搭建基础镜像&#xff08;centosjdktomcat&#xff09; 1. 基于centosjdk基础镜像2. 拷贝源文件到工作目录3. 安装tomcat3.1 解压安装包3.2 拷贝setenv.sh文件3.3 拷贝tomcat配置文件3.4 拷贝启动脚本3.5 设置entrypoint命令 4. 配置文件示例4.1 server.xml4.2 setenv.sh4.3 st…

STL——stackqueue

stack stack即为栈&#xff0c;先进后出是其特点 栈只有栈顶元素能被外界使用&#xff0c;故不存在遍历行为 栈中常用接口 构造函数 stack<T> stk; //默认构造方式 stack(const stack &stk); //拷贝构造 赋值操作 stack& operator(const stack &stk); …

23 重构:烟囱式、平台化、中台化的架构

上一讲里&#xff0c;我们介绍了两大类型的系统升级重构方案&#xff0c;还介绍了如何进行重构版本的上线&#xff0c;以及如何平滑地完成新老版本切换的方案。在本讲里&#xff0c;将会具体介绍如何判断系统发展到什么阶段需要重构&#xff0c;以及如何实施重构。 系统稳定性…