7456 我本来还在想 这要怎么数
拍一下脑袋才反应过来 这不就是加减法吗
真的给猴哥学校跪了,first solve 三分钟,我连题都没读完呢……
太慢了,搁lc周赛人家四题都做完了
本來想看看自己有多弱智,但是想到 JavaScript 處理 input 好麻煩就懶了 ![]()
这种题不用 Python 就是在跟自己作对,C++ 还要担心 int 会不会溢出 ![]()
JavaScript 有 BigInt
JS 寫題實在痛苦,很多標準 data structures 都沒有,搞得 LeetCode 還得給你引進第三方庫 ![]()
python也没有标准
也得用
说实话我被
安利了几次之后现在真心觉得
不错 ![]()
等待 sortedcontainers 加入標準包的那一天:Add binary search tree to collections - Ideas - Discussions on Python.org
JavaScript 可是連 queue/heap 都沒有 ![]()
三十分钟都做不出来,我太笨了
旅行者也用,虽然是主人的任务罢了
用时 10 分钟
还爆了一波 int
罚时 20 分钟 ![]()
![]()
四小时内做出来击败100%美国大学生
有趣但不难
注意审题!
摸鱼人节(April Fish Day)快乐!不知不觉这个帖子已经一周年了。一年十二题,四舍五入也算是月更了吧[1] ![]()
今天的题目是 2026 年 ICPC North America Championship 的另一道签到题。这是一道跟薅羊毛有关的题——I Don’t Miss Pennies ![]()
Kattis 链接:I Don't Miss Pennies – Kattis, Kattis
解题思路
首先我想说的是,题目中薅羊毛的方法简直是弱爆了,Citi Rewards+ 才是 yyds(
言归正传,其实这道题的结果跟每件商品的具体价格无关,只跟价格除以五的余数有关。
- 如果余数是 0、1、2,那么单独购买就好了,羊毛薅到

- 如果余数是 3 或 4,那我们得想办法组合一下。最好的办法是每次把一个 3 和一个 4 凑成一对,可以薅到 2¢。这样凑完之后……
- 如果还剩下多余的 3,那么每两个 3 凑在一起可以薅到 1¢。
- 如果还剩下多余的 4,那么每三个 4 凑在一起可以薅到 2¢。
- 如果还有多余的零头,就只能忍痛被反薅了

参考代码
import collections
input()
c = collections.Counter(p % 5 for p in map(int, input().split(" ")))
pairs = min(c[3], c[4])
c[3] -= pairs
c[4] -= pairs
print(c[1] + c[2] * 2 + pairs * 2 + c[3] // 2 - (c[3] % 2) * 2 + (c[4] // 3) * 2 - c[4] % 3)
[WARN] off-by-one error ↩︎
連簽到題都寫不出來 ![]()
随便贪了一下,过了。懒得证明了去捞卤牛肉了
n = int(input())
s = input()
mods = [0]*5
for item in s.split(' '):
mods[int(item)%5] += 1
b, c, e, d = mods[1:]
res = b+2*c-d-2*e+min(d, e)*5
d, e = d-min(d, e), e-min(d, e)
res += (d//3)*5+(e//2)*5
print(res)
写完才发现和水妈的贪法是一样的。果然同样的论坛养出同样的挂壁。
WA 一次,寫得好醜 ![]()
import collections
n = int(input())
prices = [int(_) for _ in input().split()]
piles = collections.defaultdict(int)
for p in prices:
piles[(p % 5] += 1
# 3 + 4 -> 7
pair = min(piles[3], piles[4])
piles[3] -= pair
piles[4] -= pair
piles[2] += pair
# 3 + 3 -> 6
piles[1] += piles[3] // 2
piles[3] %= 2
# 4 + 4 + 4 -> 12
piles[2] += piles[4] // 3
piles[4] %= 3
res = piles[1] + piles[2] * 2 - piles[3] * 2 - piles[4]
print(res)
看不懂Python desuwa
总结
#include <bits/stdc++.h>
int n, x, res;
int main() {
int a[5] = {0};
res = 0;
std::cin >> n;
while (n--) {
std::cin >> x;
a[x % 5]++;
}
if (a[3] > a[4]) {
a[2] += a[4];
a[3] -= a[4];
a[4] = 0;
int r = a[3] / 2;
a[1] += r;
a[3] -= 2 * r;
} else if (a[3] == a[4]) {
a[2] += a[3];
a[3] = 0;
a[4] = 0;
} else {
a[2] += a[3];
a[4] -= a[3];
a[3] = 0;
int r = a[4] / 3;
a[2] += r;
a[4] -= 3 * r;
}
for (int i = 1; i <= 2; i++) {
res += a[i] * i;
}
for (int i = 3; i <= 4; i++) {
res -= a[i] * (5 - i);
}
std::cout << res << std::endl;
}
这种题比较适合数学好的人做,不用纠结半天证明贪心是对的


