news 2026/6/25 13:12:05

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/6/21 4:55:58

conda info查询TensorFlow环境详细信息

基于 Conda 的 TensorFlow 环境管理与镜像化实践 在深度学习项目开发中&#xff0c;最令人头疼的往往不是模型结构设计或训练调参&#xff0c;而是“为什么代码在我机器上能跑&#xff0c;换台设备就报错&#xff1f;”这类环境不一致问题。尤其当项目依赖 TensorFlow 2.9 这类…

作者头像 李华
网站建设 2026/6/13 19:52:17

FPGA JTAG接口设计全解析

1.JTAG的作用 JTAG (Joint Test Action Group) 是 FPGA 开发中最重要的接口&#xff0c;没有之一。它的主要作用有两个&#xff1a; 下载/配置 (Configuration)&#xff1a; 把你写好的代码&#xff08;.bit 文件&#xff09;烧录到 FPGA 里面去。 在线调试 (Debugging)&#…

作者头像 李华
网站建设 2026/6/18 9:05:18

从零搭建KubeEdge边云系统,Java应用部署全解析

第一章&#xff1a;从零搭建KubeEdge边云协同架构KubeEdge 是一个开源的边缘计算平台&#xff0c;将 Kubernetes 的能力扩展到边缘节点&#xff0c;实现边云协同。通过 KubeEdge&#xff0c;用户可以在云端统一管理边缘设备和应用&#xff0c;同时支持离线运行、边缘自治和高效…

作者头像 李华
网站建设 2026/6/21 11:14:20

千万不能错过的实验室净化厂家推荐!

千万不能错过的实验室净化厂家推荐&#xff01;前言在现代科研和生产过程中&#xff0c;实验室的环境质量直接影响到实验结果的准确性和可靠性。因此&#xff0c;选择一家专业的实验室净化厂家至关重要。今天&#xff0c;我们就来聊聊如何选择合适的实验室净化厂家&#xff0c;…

作者头像 李华
网站建设 2026/6/22 16:50:58

Markdown数学公式书写指南:配合Transformer模型推导说明

Markdown数学公式书写指南&#xff1a;配合Transformer模型推导说明 在深度学习研究日益深入的今天&#xff0c;如何清晰、准确地表达复杂的数学思想&#xff0c;已经成为科研与工程实践中的一项核心能力。尤其是在 Transformer 架构主导 NLP 和多模态任务的当下&#xff0c;从…

作者头像 李华