[CodeForces] CF520 题解
A. Pangram
【题目大意】
给定一个字符串,询问是否所有英文字符(a
到 z
)都在这个字符串中出现过,不区分大小写。
【解题思路】
开个桶记录字符是否出现过,最后遍历桶,如果发现有一个没出现就输出 NO
,否则就输出 YES
。注意不区分大小写!
B. Two Buttons
【题目大意】
给定两个正整数
【解题思路】
正难则反,考虑将
考虑贪心。显然除法比加法更优。所以能进行除法就进行除法。
因此,只有在
操作的时候统计答案即可。
C. DNA Alignment
【题目大意】
给定一个长度为 A
,T
,G
,C
四种字符。
定义
你需要求出满足与原字符串
【解题思路】
考虑贪心构造。
我们对于构造的字符串,每个字符都选取原字符串出现次数最多的字符,这样可以使
可以这么理解,选字符串出现次数更多的字符会让移位时相同位出现的“概率”更大,这样的话,选出现次数越多的字符那也就比选其他的
也就是说,构造的字符串中,每个位置都选择原字符串里出现次数最多的字符即可。
注意这题的问法,我们需要求的是这样的字符串的个数。我们每个位置都要
D. Cubes
【题目大意】
称这个图形是稳定的,如果对于任何一个左下角坐标为
现在,两个人甲和乙来拆除这个图形。每次操作可以移除一个方块,然后按拆除的顺序排列好。他们需要保证每次拆除后图形是稳定的。最开始,图形是稳定的。
最后,这些方块的编号组成了一个
方块的编号是
【解题思路】
考虑贪心。
由于越先拆的放在越高位,所以说,甲的最优策略是每次拆除可以拆的方块中编号最大的,乙每次拆除可以拆的方块中编号最小的。这可以用一个大根堆和一个小根堆来维护。
如何判断一个方块可不可以拆?这只需要考虑它的上方和斜上方的方块即可。
删除操作可以用
注意编号是从
E. Pluses everywhere
【题目大意】
给定
【解题思路】
考虑对每个
若在
综上,
转化成方便处理的形式得到
则有总答案
现在,如果直接计算时间复杂度为
其中
在
在
同理,
在计算总答案
化简,得
对于内层
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!