AtCoder ABC 268 复盘
A Five Integers
直接用 set
就可以搞定了。
B Prefix?
string::substr()
,启动!
只需要判断 $S$ 是否等于 $T_{[0,N)}$ 即可,其中 $N$ 为 $S$ 的长度。
C Chinese Restaurant
如果直接模拟,时间复杂度将高达 $\mathrm O(N^2)$,需要优化。
设 $c_k$ 是进行 $k$ 次旋转后快乐的人的数量,则答案为 $\max_{i=0,1,\ldots,N-1}(c_i)$。假设第 $i$ 道菜最初出现在第 $j$ 个人面前,那么,将第 $i$ 道菜旋转到第 $(i-1)\bmod N$、$i$ 和 $(i+1)\bmod N$ 个人面前所需的次数分别为 $(i-1-j)\bmod N$、$(i-j)\bmod N$ 和 $(i+1-j)\bmod N$ 次。因此,对于第 $i=0,1,\ldots,N-1$ 个人,我们可以 $\forall i\in [0,N)\ c_{(i-1-j) \bmod N}\leftarrow c_{(i-1-j) \bmod N}+1,c_{(i-j) \bmod N}\leftarrow c_{(i-j) \bmod N}+1,c_{(i+1-j) \bmod N}\leftarrow c_{(i+1-j) \bmod N}+1$,这样我们就可以在 $\mathrm O(N)$ 的时间内求得 $c_0,c_1,\ldots,c_{N-1}$。
P.S. 可以按照 $\forall i=p_0,p_1,\ldots,p_{N-1}$ 的顺序进行处理来简化运算。
D Unique Username
DFS。分为两部分:名字和下划线数量。名字部分可以理解为全排列;下划线部分则直接一个一个地增加数量。如果此时字符串的长度 $\geq 16$,直接 return
;否则,还需用 unordered_set
$\mathrm O(1)$ 查询是否重复:如果不重复,则输出并 exit(0)
,否则 return
继续搜索。
E Chinese Restaurant (Three-Star Version)
同 C 题,如果暴力,则 $\mathrm O(N^2)$。
考虑优化。在转动餐桌的过程中,第 $i$ 道菜离第 $i$ 个人的距离只有两种情况:先递增再递减 或 先递减再递增。而它们在二维坐标系上会呈现为很多条一次函数的图像。因此只需要存点再取 min
即可。
F Best Concatenation
很容易想到贪心。只需要按照每个字符串能产生的贡献降序排序,然后将它们拼接成一个字符串 $T$,再计算 $T$ 的贡献即可。
这里的贡献即题目中的 “score
”。
__EOF__

本文链接:https://www.cnblogs.com/TigerTanWQY/p/17988107.html
关于博主:GD-SZ 初一蒟蒻,明年拿下六级勾
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现