能量槽题目描述在实验室中,有一个“能量槽”和 n 个待处理的能量块。第i个能量块的能级为a i ,其蕴含的能量为2a i 。实验需按顺序执行n次操作,第i次操作流程如下:(1)将第i个能量块放入堆槽的顶部。(2)随后启动“自动融合程序”,重复执行以下检查,直到无法继续:若槽中能量块数量≤1,停止融合。若顶部第 1 个与第 2 个能量块的能级不同,停止融合。若顶部两个能量块能级相同,则将它们从槽中移除,并向顶部放入一个能级为原能级 + 1的新能量块,其能量为两者之和。再次回到检查步骤,继续尝试融合。求 n 次操作全部完成后,槽中剩余的能量块总数。输入格式第一行,一个整数n。接下来 n 行,每行一个整数 ai。输出格式输出 n 次操作结束后槽中剩余能量块的数量。输入样例#1输出样例#1输入样例#2输出样例#2说明提示:1≤n≤2×10^5,0≤a i ≤10^9,输入均为整数。限制:时间限制:1000ms,内存限制:256MiB
正确答案:参考程序(Python):n=int(input());a=[int(input()) for _ in range(n)];st=[];for x in a:st.append(x);while len(st)>=2 and st[-1]==st[-2]:v=st.pop();st.pop();st.append(v+1);print(len(st))。核心:栈模拟能量融合。
试卷来源:202603 青少年等级考试C/C++真题六级