XTU1198:Candy(背包)
题目描写叙述
Henry和Lena近期买了非常多各种各样的糖…他们决定把全部糖分了… 可是两个人都不希望自己糖的总重量比对方少太多。 鉴于不同的糖的味道不尽同样,所以每一个糖都有一个yummy值。 Henry希望知道在两人得到的糖总质量差不大于m的时候,自己的糖yummy值之和的尽量大。
输入
有多组数据 每组数据第一行为两个整数。n,m,(1 <=n <= 100。 0 <= m <= 500) 接下来有两行,每行有n个数,第一行的第i个数表示第i颗糖的重量xi( 0 < xi <= 100), 第二行的第i个数表示第i颗糖的yummy值 yi( 0 < yi <= 100 )
输出
每行输出一组数据的结果, 一个数表示Henry的糖的总yummy值的最大值。假设不存在如题所述的分糖方案,输出-1
例子输入
1 30
43
15
2 290
89 22
76 77
例子输出
-1
153
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
int wei[110],val[110],dp[10010];
int main()
{
int n,m;
while(scanf("%d%d",&n,&m)>0)
{
memset(dp,-1,sizeof(dp));
int sum=0;
for(int i=0; i<n; i++)
{
scanf("%d",&wei[i]);
sum+=wei[i];
}
for(int i=0; i<n; i++)
scanf("%d",&val[i]);
dp[0]=0;
int ans=0;
for(int i=0; i<n; i++)
{
for(int j=sum; j>=wei[i]; j--)
{
if(~dp[j-wei[i]])
{
dp[j]=max(dp[j],dp[j-wei[i]]+val[i]);
int ss=sum-j-j;
if(ss>=-m&&ss<=m) ans=max(ans,dp[j]);
}
}
}
printf("%d\n",ans?ans:-1);
}
return 0;
}
XTU1198:Candy(背包)的更多相关文章
- HLOJ1366 Candy Box 动态规划(0-1背包改)
题目描述: 给出N个盒子(N<=100),每个盒子有一定数量的糖果(每个盒子的糖果数<=100),现在有q次查询,每次查询给出两个数k,m,问的是,如果从N个盒子中最多打开k个盒子(意思是 ...
- HDU3466 Proud Merchants[背包DP 条件限制]
Proud Merchants Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others) ...
- poj2486Apple Tree[树形背包!!!]
Apple Tree Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 9989 Accepted: 3324 Descri ...
- POJ1155TELE[树形背包]
TELE Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 4957 Accepted: 2726 Description ...
- POJ1837 Balance[分组背包]
Balance Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 13717 Accepted: 8616 Descript ...
- POJ1384Piggy-Bank[完全背包]
Piggy-Bank Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 10787 Accepted: 5258 Descr ...
- Candy Store
Candy Store Time Limit: 30000ms, Special Time Limit:75000ms, Memory Limit:65536KB Total submit users ...
- [LeetCode] Candy 分糖果问题
There are N children standing in a line. Each child is assigned a rating value. You are giving candi ...
- 【USACO 3.1】Stamps (完全背包)
题意:给你n种价值不同的邮票,最大的不超过10000元,一次最多贴k张,求1到多少都能被表示出来?n≤50,k≤200. 题解:dp[i]表示i元最少可以用几张邮票表示,那么对于价值a的邮票,可以推出 ...
随机推荐
- RP2837 IN1-IN2 对应关系 2路DI
RP2837 IN1-IN2 对应关系: IN1 ARM-IO2 PA16 IN2 ARM-IO6 PA4 root@sama5d3-linux:~ echo 16 > /sy ...
- Android——android weight 属性(百度)
LinearLayout 在androidUI布局中使用非常多,它其中有个很方便又很有意思的属性 weight ,这个属性理解起来不是那么简单的,而真正理解了又觉得非常简单! 下面就通过一个例子来说明 ...
- catch signal
捕抓信号 如果信号的处理动作是用户自定义函数,在信号递达时就调用这个函数,称为捕抓信号. 除了SIGSTOP和SIGKILL进程能够忽略或捕获其他的全部信号. 注:信号可从两个不同分类角度对信号进行分 ...
- JVM系统性能监控总结
(1) uptime 查看系统运行时间.连接数(终端连接数).平均负载 (2) top 查看CPU.内存.交换空间使用情况,可以看到当前系统性能进程消耗资源情况 (3) vmstat 统计系统CPU. ...
- java调用kettle_导入jar包(1)
版权声明:本文为博主原创文章,未经博主允许不得转载. Java调用Kettle执行任务或转换,需要使用Kettle中的jar,可以先导入lib目录中的几个基本的jar,如:kettle-core.ja ...
- dp + 状态压缩 - Codeforces 580D Kefa and Dishes
Kefa and Dishes Problem's Link Mean: 菜单上有n道菜,需要点m道.每道菜的美味值为ai. 有k个规则,每个规则:在吃完第xi道菜后接着吃yi可以多获得vi的美味值. ...
- 错题0925-java
1.Given the following code: public class Test { private static int j = 0; private static Boolean met ...
- ResultSet是结果集对象
ResultSet是结果集对象 DriverManager管理一组驱动程序 PreparedStatement预编译的,用来发送和执行SQL语句的
- cpio -H newc参数详解
-H format 其中个format可以是: ‘bin’ The obsolete binary format. (2147483647 bytes) ‘odc’ The old (POSIX.1) ...
- SHGetSpecialFolderPath用法
The SHGetSpecialFolderPath function retrieves the path of a special folder that is identified by its ...