P1023 - 部分背包问题

题目描述

你有一个背包,其承重限制为$W$单位。同时,有一系列物品,每个物品有对应的重量$w_{i}$和价值$v_{i}$

现在请你编写一个程序来给背包里装物品,目标是在不超过背包最大重量的条件下,使得背包中的物品总价值最大化

每个物品可以部分放入到背包中,同时每件物品只有一件

输入格式

第1行,两个正整数,1个为W,代表背包的能承受的总重量,1个为N,代表不同物品的种类数,空格分隔

第2行,有N个正整数,代表每个不同物品的重量$w_{i}$,空格分隔

第3行,有N个正整数,代表每个不同物品的价值$v_{i}$,空格分隔

输出格式

1行,一个浮点数(保留两位小数),代表背包中的物品最大的总价值

程序中涉及到的浮点数建议使用double类型去表示

输入输出样例

输入样例 输出样例
20 3
18 15 10
25 24 15
31.50

数据范围与提示

100%的数据:$1 \le W, N, w_{i}, v_{i} \le 1000$

测试点数目

共10个测试点,每个测试点10分

时间与内存限制

每个测试点时间:1000ms(1.0s),内存:256MiB

输入输出模式

本OJ支持两种输入输出模式

1. 标准输入输出模式:
直接从标准输入和标准输出读写数据,不需要使用freopen进行文件输入输出重定向
2. 文件输入输出模式(国内信奥赛输入输出模式):
从文件中读写数据,需要使用freopen进行输入输出重定向
本题输入文件名为:P1023.in,输出文件名为:P1023.out