http://acm.hdu.edu.cn/showproblem.php?pid=5616

题意:有n个物品,每个重量为w[i],有一个天平,你可以把物品放在天平的左边或者右边,接下来m个询问,问是否能用这些物品称出x的重量。

思路:如果只能放一边,那就是很简单的背包DP,现在考虑要放在左右两边,那么只需要逆着来做一遍就好了。因为如果放在左边就不能放在右边了,因此要分开算。

初始状态dp[0][0] = 1.

if(dp[i-1][j+w[i]] == 1) dp[i][j] = 1。(j + w[i] <= sum)

if(dp[i-1][j-w[i]] == 1) dp[i][j] = 1。(j - w[i] >= 0)

可以用滚动数组优化。

 #include <bits/stdc++.h>
using namespace std;
#define N 25 int dp[][N*], w[N]; int main() {
int t; scanf("%d", &t);
while(t--) {
int n; scanf("%d", &n);
int sum = ;
for(int i = ; i <= n; i++) scanf("%d", &w[i]), sum += w[i];
memset(dp, , sizeof(dp));
int pre = , now = ; dp[][] = ;
for(int i = ; i <= n; i++) {
for(int j = ; j <= sum; j++) dp[now][j] = dp[pre][j];
for(int j = sum; j >= w[i]; j--)
if(dp[pre][j-w[i]]) dp[now][j] = ;
for(int j = sum - w[i]; j >= ; j--)
if(dp[pre][j+w[i]]) dp[now][j] = ;
swap(pre, now);
}
int m; scanf("%d", &m);
while(m--) {
int x; scanf("%d", &x);
if(dp[pre][x]) puts("YES");
else puts("NO");
}
}
return ;
}

HDU 5616:Jam's balance(背包DP)的更多相关文章

  1. HDU 5616 Jam's balance 背包DP

    Jam's balance Problem Description Jim has a balance and N weights. (1≤N≤20)The balance can only tell ...

  2. hdu 5616 Jam's balance(dp 正反01背包)

    来自官方题解: AC代码: #pragma comment(linker, "/STACK:1024000000,1024000000") #include<iostream ...

  3. HDU 5616 Jam's balance(Jam的天平)

    HDU 5616 Jam's balance(Jam的天平) Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K ...

  4. HDU 5616 Jam's balance(DP)

    题目网址:http://acm.hdu.edu.cn/showproblem.php?pid=5616 题目: Jam's balance Time Limit: 2000/1000 MS (Java ...

  5. HDU 5616 Jam's balance(01背包)

    题目网址:http://acm.hdu.edu.cn/showproblem.php?pid=5616 题目: Jam's balance Time Limit: 2000/1000 MS (Java ...

  6. hdu 5616 Jam's balance 正反背包+转换

    http://acm.hdu.edu.cn/showproblem.php?pid=5616 思路 题目中蕴含着两种需要计算的重量 1. 从所有的砝码中挑出任意种2.(转换的思想)在天平的两端都挑出这 ...

  7. HDU 5616 Jam's balance

    背包.dp[i]=1表示i这种差值能被组合出来,差值有负数,所以用sum表示0,0表示-sum,2*sum表示sum. 询问X的时候,只需看dp[sum+X]或者dp[sum-X]是否有一个为1,注意 ...

  8. HDU 5501 The Highest Mark 背包dp

    The Highest Mark Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?p ...

  9. HDU 1011 Starship Troopers 树形+背包dp

    http://acm.hdu.edu.cn/showproblem.php?pid=1011   题意:每个节点有两个值bug和brain,当清扫该节点的所有bug时就得到brain值,只有当父节点被 ...

  10. HDU 5119 Happy Matt Friends (背包DP + 滚动数组)

    题目链接:HDU 5119 Problem Description Matt has N friends. They are playing a game together. Each of Matt ...

随机推荐

  1. linux_无秘登录问题(不生效)

    1 . 登录1,执行命令 ssh-keygen -t rsa 之后一路回 车,查看刚生成的无密码钥对: cd .ssh 后 执行 ll 2 .把 id_rsa.pub 追加到授权的 key 里面去. ...

  2. NSURLSession 网络库 - 原生系统送给我们的礼物

    大家在进行iOS开发的时候一定会用到网络操作.但由于早期原生的 NSURLConnection 操作起来有很多不便,使得大家更愿意使用第三方库的解决方案,比如鼎鼎大名的 AFNetworking.正是 ...

  3. 不得不说,我太佩服node了,连openXML也搞定了!

    https://github.com/Ziv-Barber/officegen 开源项目地址 使用报告等有空完成!

  4. MVC 身份验证和异常处理过滤器

    :在Global中注册为全局过滤器,应用于所有的Controller的Action 参数类均继承自ControllerContext,主要包含属性请求上下文.路由数据.结果 using FilterE ...

  5. 【C#】使用EF访问Sqlite数据库

    原文:[C#]使用EF访问Sqlite数据库 1. 先上Nuget下载对应的包 如图,搜索System.Data.SQLite下载安装即可,下载完之后带上依赖一共有这么几个: EntityFramew ...

  6. No module named import_export.admin Django python

    主要是安装xadmin后出现错误 解决方案: pip install django-import-export 重启即可

  7. How do you create a DynamicResourceBinding that supports Converters, StringFormat?

    原文 How do you create a DynamicResourceBinding that supports Converters, StringFormat? 2 down vote ac ...

  8. Linux编译安装Qt 5.4.1(-qt-xcb是必须要指定的,卸载自带的gcc等)

    转载请注明文章:Linux编译安装Qt 5.4.1 出处:多客博图 很久不写文章了,过程很简单,但是操作很多,简单说吧. 前言: 操作系统CentOS 6.6,64位的. 1.安装gcc 4.8.4, ...

  9. Win10《芒果TV》商店版更新v3.2.2:新增对Win10产品专用会员兑换码支持,全新的最具价值用户纪念奖励

    在WinHEC2016宣布Win10和ARM历史性结合之际,<芒果TV>UWP版迅速更新v3.2.2版,主要是新增对Win10产品专用会员兑换码支持,推出全新的最具价值用户纪念奖励(具有唯 ...

  10. ArcGIS for Desktop入门教程_第八章_Desktop学习资源 - ArcGIS知乎-新一代ArcGIS问答社区

    原文:ArcGIS for Desktop入门教程_第八章_Desktop学习资源 - ArcGIS知乎-新一代ArcGIS问答社区 1 学习资源 用户在学习和应用过程中,可以参考的资源如下: 1. ...