题目顺序按开题顺序排列
# I - The Easiest 问题
# 题目大意
给定一行字符串,问其中有多少个小写字母
# 题解
1 | void solve() { |
# L - Recharge
# 题目大意
你现在有一个电池,这块电池有 格电,现在,有两种充电站
- 个第一种充电站,可以加 格电
- 个第二种充电站,可以加 格电
若你现在有 格电,那么使用第二种充电站的话,则会充满这块电池但是就浪费了一格电
问:最多能充满多少块这样的电池?
# 数据范围
- 组数据,
# 题解
尽量先用加 格电的充电站先充,针对 的奇偶性进行分类讨论
- 是偶数
- 那么需要消耗
t = k / 2
个 即可拼成一个 - 所以,只用 的话,可以凑出
a = y / t
个,还剩下y = y - a * t
个 - 那么剩下的就可以直接散着拼了,也就是有
(x + 2 * y) / k
个 - 最终答案为
a + (x + 2 * y) / k
,此处 为减之后的
- 那么需要消耗
- 是奇数
- 那么需要消耗
t = (k - 1) / 2
个 和一个 即可拼成一个 - 所以可以先拼出
a = min(y / t, x)
个,还剩下y = y - a * t
个 和x = x - t
个 - 剩下的散着拼,但是这里还要考虑到浪费电的那种充电情况
- 如果 的还有剩余,那么和前面的情况,也就是有
(x + 2 * y) / k
个- 那么最后答案就是
a + (x + 2 * y) / k
,此处的 和 均为减之后的 和
- 那么最后答案就是
- 如果 的没有剩余,那么就全部用 拼,只能考虑浪费,也就是有
y / ((k + 1) / 2)
个- 那么最后答案就是
a + y / ((k + 1) / 2)
,此处的 和 均为减之后的 和
- 那么最后答案就是
- 如果 的还有剩余,那么和前面的情况,也就是有
- 那么需要消耗
这题还有一个坑是, 的范围是 ,那么当 时,我们前面讨论中的除 就会
再添加一个特判,当 时,答案是
1 | void solve () { |