洛谷基础赛 #2 & qw Round -1 题解

大概是我打的最好的一场之一。

A. color

给出洛谷“咕值”的五项标准(相加即为咕值),请根据洛谷咕值系统介绍判断用户名的颜色,用字符串 GrayBlueGreenOrangeRed 中的一个表示。

按题目模拟即可。

时间复杂度:\(O(1)\)

B. drink

给定一个长度为 \(n\) 的数列 \(a\),下标从 1 开始。现在只可以选择一次 \(l\)\(r\) 使得 \(a_l, a_{l+1}, \ldots, a_{r-1}, a_r\) 均变为 0。请问需选择什么 \(l, r\) 使得数列中的所有元素均为 0?

我们寻找最左边的非零元素,其下标为 \(l\);再寻找最右边的非零元素,其下标为 \(r\)。这样被选中的区间一定会包含所有的非零元素,满足题意。

时间复杂度:\(O(n)\)

C. queue

很多人排队打游戏,其中队伍最前面的 2 个人被视为 正在游玩(如果没有 2 个人就是第 1 个人)。我们要实现一个队列,支持以下操作:

  • 开始新一局游戏(start):之前在玩的在这时回到队尾,队首的人补上。
  • \(x\) 进入队伍(arrive x):把 \(x\) 插入队尾,除非 \(x\) 已经在队伍里。
  • \(x\) 中途退出(leave x):把 \(x\) 移出队伍,除非 \(x\) 正在游玩。

此题我用的链表(list)实现,60 分,超时了 4 个点。正解则是用 set 维护队列,再用 map 存储是否入队和是否在游玩即可。

D. pay

题解见此

posted @ 2025-08-04 08:43  David9006  阅读(22)  评论(0)    收藏  举报