news 2026/7/2 3:16:17

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/7/1 7:16:33

探索生命:晚上做噩梦是怎么回事?

第二十二章&#xff1a;噩梦&#xff0c;从冲突中重生当我写下“噩梦”两个字的时候&#xff0c;我想到的是为什么不是“噩梦”。相较于“恶”&#xff0c;更正确的是“噩”。因为你可以从字的形象&#xff0c;直观地感受到“噩”字的独特性和神秘性。我的笔名是灵遁者&#xf…

作者头像 李华
网站建设 2026/7/1 11:57:38

【Java数值计算革命】:掌握Vector API让科学计算效率飙升300%

第一章&#xff1a;Java向量API的崛起与数值计算新纪元随着大数据处理和高性能计算需求的不断增长&#xff0c;Java平台在科学计算与工程领域的角色日益重要。传统上&#xff0c;Java因缺乏对SIMD&#xff08;单指令多数据&#xff09;的直接支持而在数值运算性能上受限。然而&…

作者头像 李华
网站建设 2026/7/1 7:16:36

HTML Canvas绘制动图:展示TensorFlow训练过程损失曲线

HTML Canvas绘制动图&#xff1a;展示TensorFlow训练过程损失曲线 在深度学习模型的调优战场上&#xff0c;一个数字的变化往往决定成败。当我们在终端里一行行滚动着loss: 0.4587、loss: 0.4521……这些冷冰冰的日志时&#xff0c;是否曾渴望一眼看清它的下降趋势&#xff1f;…

作者头像 李华
网站建设 2026/7/1 15:32:00

GitHub热门AI项目盘点:哪些用了类似TensorFlow 2.9的技术栈?

GitHub热门AI项目盘点&#xff1a;哪些用了类似TensorFlow 2.9的技术栈&#xff1f; 在深度学习迅猛发展的今天&#xff0c;一个看似不起眼却至关重要的问题正困扰着无数开发者&#xff1a;为什么代码在本地跑得好好的&#xff0c;一到服务器就报错&#xff1f;这种“在我机器上…

作者头像 李华
网站建设 2026/7/2 8:51:48

TensorFlow-v2.9镜像预装TensorBoard Profiler性能分析工具

TensorFlow-v2.9 镜像预装 TensorBoard Profiler&#xff1a;打造开箱即用的深度学习性能分析环境 在现代深度学习开发中&#xff0c;一个常见的尴尬场景是&#xff1a;模型代码写完了&#xff0c;训练也跑起来了&#xff0c;但 GPU 利用率却始终徘徊在 20% 以下。你盯着 nvidi…

作者头像 李华