9513 防空洞

时间限制:1000MS  内存限制:65535K
提交次数:104 通过次数:24

题型: 编程题   语言: G++;GCC

 

Description

    有一天,dragon123偷偷地拿锄头在学校里挖开了一个尘封已久的防空洞。
    他在这个防空洞里面找到许多贵重的东西:一些石头和一些液体。
    dragon123知道,只要他把这些石头和液体拿出去卖,那么就一定可以赚大钱。但是,他只有一个载重量为W的瓶子来装这些东西。
    防空洞里面有很多块石头,每块石头的重量为Wi,价值为Mi,但是石头不能够砸烂,否则就不值钱了。
    此外,洞里面很多种贵重的液体。对于某种液体,洞内存储了Wi重量,且这Wi重量液体的总价值为Mi。
    液体是可以部分放进瓶子里面的。也就是说,如果洞里面有Wi重量的某种液体,那么dragon123可以带走Ws(0<=Ws<=Wi)重量。
    给出洞里面石头和液体的信息,以及瓶子的载重量W,dragon123希望你帮忙计算出他能够带回东西的最大价值。




输入格式

    输入文件的第一行是n与W。
    n是洞里面贵重物品的数量总和(包括石头与液体)。W是瓶子的载重量。N (1 <= N <= 100) 且 W (0 <= W <= 50000)
    接下来有n行,每行都有3个数字a,b,c。
    如果c是0,那么就意味着这一行表示的物品是石头。那么a就是这块石头的重量,b就是这块石头的价值。
    如果c是1,那么就意味着这一行表示的物品是液体。那么a就是这种液体在山洞中的总储量,b就是山洞中所有的这种液体的总价值。



输出格式

    输出仅有一行,表示能够获得的最大价值。保留小数点后两位小数。



 

输入样例

3 150
100 100 0
100 100 0
130 10 1



 

输出样例

103.85



 

来源

PKKJ 

 

作者

a470086609

 

思路: 每个石头可以当做0-1背包物品来处理,每种液体当做多重背包物品来处理(二进制分解)

  

posted @   JL_Zhou  阅读(466)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
点击右上角即可分享
微信分享提示