POJ 2709 Painter

本文介绍了一种通过计算不同颜色颜料组合来配制特定颜色的方法,特别是如何有效利用各种颜料来配制灰色的过程。该算法使用贪心策略,通过逐步减少颜料体积的方式提高颜料的利用率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

给你某些颜色的颜料和灰色颜料需要的体积,其中任意三种Xml其他颜色可以合成Xml灰色颜料

 

每组颜料包含除灰色外的其他每种颜料50ml,问最少要几组颜料才能配出所需的颜料

 

暴搜,首先计算配出其他颜色颜料最少需要多少组,然后依次加1,判断是否能配出灰色

 

判断是否能配出灰色时,计算其他每种颜色的余量,排序,依次将最多的三种颜色减1

 

一开始直接减了余量第三多的数目,这种策略在碰到一些特殊数据时就失效了

例如 5 200 200 200 200 200 333

减完一次后 剩下 200 200 0 0 0 233,两种200的颜料不能配了,但是如果每次减50,结果依次为:

 

200 200 200 200 200 333

200 200 150 150 150 283

150 150 150 150 100 233

150 100 100 100 100 183

100 100 100   50   50 133

  50   50   50   50   50   83

  50   50     0     0     0   33

 

这种情况下可以配300ml灰色

 

每次减的越少,每种颜料的利用率就越高,因为必须三种颜色的颜料同时有Xml时才能配色,只有一种或者两种颜料大于0时不能配色,如果这一种或者两种颜色的体积比较大时,明显就浪费了,所以贪心策略每次将体积最大的三种颜料体积减1

 

代码:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值