#4560. 「JLOI2015」装备购买

题意

脸哥最近在玩一款神奇的游戏,这个游戏里有 n n n 件装备,每件装备有 m m m 个属性,用向量 z i = ( a 1 , … , a j , … , a m ) \mathbf{z_i}=(a_1, \ldots ,a_j, \ldots , a_m) zi=(a1,,aj,,am) 表示 ( 1 ≤ i ≤ n ,   1 ≤ j ≤ m 1 \leq i \leq n, \ 1 \leq j \leq m 1in, 1jm),每个装备需要花费 c i c_i ci,现在脸哥想买一些装备,但是脸哥很穷,所以总是盘算着怎样才能花尽量少的钱买尽量多的装备。对于脸哥来说,如果一件装备的属性能用购买的其他装备组合出(也就是说脸哥可以利用手上的这些装备组合出这件装备的效果),那么这件装备就没有买的必要了。

严格的定义是,如果脸哥买了 z i 1 , … , z i p \mathbf{z_{i_1}}, \ldots , \mathbf{z_{i_p}} zi1,,zip p p p 件装备,那么对于任意待决定的 z h \mathbf{z_h} zh,不存在 b 1 , … , b p b_1, \ldots ,b_p b1,,bp 使得 b 1 z i 1 + … + b p z i p = z h b_1\mathbf{z_{i_1}} + \ldots + b_p\mathbf{z_{i_p}} = \mathbf{z_h} b1zi1++bpzip=zh b i b_i bi 均是实数),那么脸哥就会买 z h \mathbf{z_h} zh,否则 z h \mathbf{z_h} zh 对脸哥就是无用的了,自然不必购买。

举个例子, z 1 = ( 1 , 2 , 3 ) ,   z 2 = ( 3 , 4 , 5 ) ,   z h = ( 2 , 3 , 4 ) ,   b 1 = 1 2 ,   b 2 = 1 2 \mathbf{z_1}=(1, 2, 3), \ \mathbf{z_2}=(3, 4, 5), \ \mathbf{z_h}=(2, 3, 4), \ b_1 =\frac{1}{2}, \ b_2 =\frac{1}{2} z1=(1,2,3), z2=(3,4,5), zh=(2,3,4), b1=21, b2=21,就有 b 1 z 1 + b 2 z 2 = z h b_1\mathbf{z_1} + b_2\mathbf{z_2} = \mathbf{z_h} b1z1+b2z2=zh,那么如果脸哥买了 z 1 \mathbf{z_1} z1 z 2 \mathbf{z_2} z2 就不会再买 z h \mathbf{z_h} zh 了。

脸哥想要在买下最多数量的装备的情况下花最少的钱,你能帮他算一下吗?

对于 100 % 100 \% 100% 的数据, 1 ≤ n , m ≤ 500 ; 0 ≤ a j ≤ 1000 1 \leq n,m \leq 500; 0 \leq a_j \leq 1000 1n,m500;0aj1000

题解

考虑贪心,从小往大取,为了满足题目限制,每取一个,就选特定的一维x,把后面的每一个装备的第x维消为0,这样一个装备只要不是每维都是0就可取。
考虑这样为什么是最优的,发现当一个装备能被一些本来不能互相表示的装备表示出来时,把这个装备替换掉原来的任何一个装备都是可行的,因此在个数最大的意义下每个装备都是等价的,从小往大取就是装备数量最多的前提下,费用最小的。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值