NOI买表题解——附二进制优化背包

题目描述

Jimmy 到 Symbol 的手表店买手表,Jimmy 只带了 n 种钱币,第 i种钱币的面额为 k_i元,张数为 a_i张。Symbol 的店里一共有 m块手表,第 i块手表的价格为 t_i 元。
Symbol 的手表店不能找零,所以 Jimmy 只能在凑出恰好的钱数时才能购买一块手表。现在对于店里的每块手表,Jimmy 想知道他能不能凑出恰好的钱数进行购买。

输入

第一行两个空格分隔的整数 n和 m表示钱币数与手表数。

接下来 n行每行两个空格分隔的整数 k_i,a_i表示钱币的面额和张数。

第 n+2行,共 m个用空格分隔的整数 t_i,表示每块手表的价格。

输出

一共 m行,对于第 i行,如果能凑出恰好的钱数购买第 i块手表则输出"Yes"(不含引号,下同),否则输出"No",注意只有首字母大写。

样例输入

3 5
1 2
5 1
6 3
3 19 21 1 7

样例输出
No
Yes
No
Yes
Yes

数据范围限制

对于 50%的数据,n≤10,m≤60,a_i≤20,k_i≤5000,t_i​≤250。

对于 100%的数据,1≤n≤200,1≤m≤10^5,1≤a_i​≤1000,1≤k_i​≤500000,0≤t_i≤500000。

提示

第二块手表 19=63+1=62+5+1*2,可以恰好凑出。

第四块手表 1=1*1,可以恰好凑出。

第五块手表 7=5+21=61+1,可以恰好凑出。


题解:

暴力50%(不过我50不是暴力,而是数据开小了):

把它当成一个无脑 的暴力01背包问题,把kik_ikiaia_iai<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值