news 2026/3/25 16:37:53

AtCoder Beginner Contest竞赛题解 | 洛谷 AT_abc438_c 1D puyopuyo

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
AtCoder Beginner Contest竞赛题解 | 洛谷 AT_abc438_c 1D puyopuyo

​欢迎大家订阅我的专栏:算法题解:C++与Python实现!
本专栏旨在帮助大家从基础到进阶 ,逐步提升编程能力,助力信息学竞赛备战!

专栏特色
1.经典算法练习:根据信息学竞赛大纲,精心挑选经典算法题目,提供清晰的代码实现与详细指导,帮助您夯实算法基础。
2.系统化学习路径:按照算法类别和难度分级,从基础到进阶,循序渐进,帮助您全面提升编程能力与算法思维。

适合人群:

  • 准备参加蓝桥杯、GESP、CSP-J、CSP-S等信息学竞赛的学生
  • 希望系统学习C++/Python编程的初学者
  • 想要提升算法与编程能力的编程爱好者

附上汇总帖:AtCoder Beginner Contest竞赛题解 | 汇总


【题目来源】

洛谷:[AT_abc438_c ABC438C] 1D puyopuyo - 洛谷

【题目描述】

给定一个长度为N NN的整数序列A = ( A 1 , A 2 , … , A N ) A=(A_1,A_2,\ldots,A_N)A=(A1,A2,,AN)

你可以执行以下操作零次或多次(任意顺序,任意次数):

· 选择一个整数k kk满足1 ≤ k ≤ ∣ A ∣ − 3 且 A k = A k + 1 = A k + 2 = A k + 3 1 \leq k \leq |A|-3 且 A_k=A_{k+1}=A_{k+2}=A_{k+3}1kA3Ak=Ak+1=Ak+2=Ak+3,然后从A AA中删除A k , A k + 1 , A k + 2 , A k + 3 A_k,A_{k+1},A_{k+2},A_{k+3}Ak,Ak+1,Ak+2,Ak+3。(更准确地说,将A AA替换为( A 1 , A 2 , … , A k − 1 , A k + 4 , A k + 5 , … , A N ) (A_1,A_2,\ldots,A_{k-1},A_{k+4},A_{k+5},\ldots,A_N)(A1,A2,,Ak1,Ak+4,Ak+5,,AN)。)

这里,∣ A ∣ |A|A表示整数序列A AA的长度。

求重复进行操作后,最终∣ A ∣ |A|A可能的最小值。

【输入】

输入以以下格式从标准输入给出:

N A 1 A 2 … A N N A_1 A_2 \ldots A_NNA1A2AN

【输出】

输出重复进行操作后,最终∣ A ∣ |A|A可能的最小值。

【输入样例】

10 1 1 1 4 4 4 4 1 2 3

【输出样例】

2

【算法标签】

《洛谷 AT_abc438_c 1D puyopuyo》 #贪心# #栈#

【代码详解】

#include<bits/stdc++.h>usingnamespacestd;constintN=200005;typedefpair<int,int>PII;// 定义pair类型,first存储颜色,second存储连续个数intn;// 彩珠总数stack<PII>st;// 栈,存储{颜色, 连续个数}intmain(){// 输入彩珠总数cin>>n;// 处理每个彩珠for(inti=1;i<=n;i++){intx;// 当前彩珠的颜色cin>>x;// 如果栈为空 或 当前颜色与栈顶颜色不同if(st.empty()||x!=st.top().first){// 新颜色入栈,连续个数为1st.push({x,1});}// 如果当前颜色与栈顶颜色相同elseif(x==st.top().first){// 栈顶颜色的连续个数加1st.top().second++;// 如果连续个数达到4,消除这4个连续的彩珠if(st.top().second==4){st.pop();}}}// 计算消除后剩余的彩珠总数intans=0;while(!st.empty()){// 累加每个颜色段剩余的彩珠数ans+=st.top().second;st.pop();}// 输出剩余彩珠数cout<<ans<<endl;return0;}

【运行结果】

10 1 1 1 4 4 4 4 1 2 3 2
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/21 15:54:28

Jupyter Notebook使用Plotly交互式绘图展示TensorFlow数据

Jupyter Notebook 使用 Plotly 交互式绘图展示 TensorFlow 数据 在深度学习项目中&#xff0c;模型训练的过程常常像一场“黑箱实验”——代码运行着&#xff0c;日志打印出一堆数字&#xff0c;但你很难直观地感知它是否正在收敛、有没有过拟合、梯度是否稳定。传统的静态图表…

作者头像 李华
网站建设 2026/3/14 9:38:29

TensorFlow-v2.9镜像中的Keras API变化有哪些值得关注?

TensorFlow-v2.9镜像中的Keras API变化有哪些值得关注&#xff1f; 在深度学习项目开发中&#xff0c;环境配置的“地狱”体验几乎每个工程师都曾经历过&#xff1a;CUDA版本不匹配、cuDNN安装失败、pip包冲突导致import keras报错……这些问题不仅消耗大量时间&#xff0c;还可…

作者头像 李华
网站建设 2026/3/17 2:36:40

Markdown syntax highlighting高亮TensorFlow代码段

构建高效深度学习开发流&#xff1a;从 TensorFlow 镜像到代码高亮的工程实践 在今天&#xff0c;一个 AI 工程师打开电脑的第一件事可能不是写模型结构&#xff0c;而是确认自己的开发环境是否“干净”——有没有版本冲突&#xff1f;CUDA 装对了吗&#xff1f;为什么昨天还能…

作者头像 李华
网站建设 2026/3/23 13:53:24

Jupyter Notebook导出为LaTeX用于学术论文撰写

Jupyter Notebook导出为LaTeX用于学术论文撰写 在撰写机器学习论文时&#xff0c;你是否曾为以下问题困扰&#xff1a;修改模型后需要重新截图更新图表、公式排版在Word中频繁错乱、合作者运行代码结果不一致&#xff1f;这些问题背后&#xff0c;其实是科研写作中“计算”与“…

作者头像 李华
网站建设 2026/3/20 14:14:26

Jupyter Notebook插入Matplotlib图表展示TensorFlow结果

Jupyter Notebook中集成Matplotlib可视化TensorFlow训练结果 在深度学习项目开发中&#xff0c;一个常见的痛点是&#xff1a;模型跑完了&#xff0c;损失也打印了&#xff0c;但你依然“看不见”它到底学到了什么。尤其是初学者面对一行行日志输出时&#xff0c;常常困惑于“这…

作者头像 李华
网站建设 2026/3/23 0:03:14

【KubeEdge边云协同开发实战】:Java开发者必须掌握的5大核心技术

第一章&#xff1a;KubeEdge边云协同架构概述KubeEdge 是一个开源的边缘计算平台&#xff0c;旨在实现云与边缘设备之间的高效协同。它将 Kubernetes 的原生能力扩展到边缘节点&#xff0c;使得在边缘侧可以统一管理应用、配置和元数据&#xff0c;同时支持离线运行和低延迟响应…

作者头像 李华