这道题的正解是 背包记录可行性 再按编号贪心,但是我们用朴素解法 枚举四个下标 也能在考试时拿到一定的分数。
件数不足 4 直接输出 0。否则四重循环枚举四个不同礼品,丢掉总价超过 10000 的组合,在合法组合里保留总价最大的;总价相同则比较升序后的编号,留下字典序更小的一组。
样例和小数据能算对。m 到 2000 时组合数大约是 2×1011,会超时,所以后面再给出正解。
小华这一年干得很出色,在部门里被当成标杆员工,领导打算给他发奖。
他能在礼品清单中挑四件,四件价钱加起来不得超过 10000 元。
每件礼品带有互不相同的编号,以及可能相同的售价。
他希望四件总价尽量贴近上限;总价相同时,把编号从小到大排好,取字典序更小的那一套。
第一行给出一个整数 m,表示清单里的礼品件数。
随后 m 行,每行两个整数 bi、wi,依次是该件礼品的编号和售价。
凑不出符合要求的四件时,输出 0。
数据范围:
若存在合法的四件礼品,输出四个编号,编号之间用空格隔开,并按升序排列。凑不齐则输出 0。
输入
6
1 100
2 100
3 8000
4 1800
5 1800
6 1800
输出
1 2 3 4
说明
[1,2,3,4]、[1,2,3,5]、[1,2,3,6] 三组总价都是 10000,都已顶到上限。编号升序后字典序最小的是 1 2 3 4。
输入
5
1 3000
2 3000
3 3000
4 3000
5 2000
输出
0
说明
任意四件的总价都超过 10000 元,因此输出 0。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册