poj 1837 01背包
Balance
Time Limit: 1000 MS Memory Limit: 30000 KB
64-bit integer IO format: %I64d , %I64u Java class name: Main
Description
It orders two arms of negligible weight and each arm's length is 15.
Some hooks are attached to these arms and Gigel wants to hang up some
weights from his collection of G weights (1 <= G <= 20) knowing
that these weights have distinct values in the range 1..25. Gigel may
droop any weight of any hook but he is forced to use all the weights.
Finally, Gigel managed to balance the device using the experience he
gained at the National Olympiad in Informatics. Now he would like to
know in how many ways the device can be balanced.
Knowing the repartition of the hooks and the set of the weights
write a program that calculates the number of possibilities to balance
the device.
It is guaranteed that will exist at least one solution for each test case at the evaluation.
Input
• the first line contains the number C (2 <= C <= 20) and the number G (2 <= G <= 20);
• the next line contains C integer numbers (these numbers are also
distinct and sorted in ascending order) in the range -15..15
representing the repartition of the hooks; each number represents the
position relative to the center of the balance on the X axis (when no
weights are attached the device is balanced and lined up to the X axis;
the absolute value of the distances represents the distance between the
hook and the balance center and the sign of the numbers determines the
arm of the balance to which the hook is attached: '-' for the left arm
and '+' for the right arm);
• on the next line there are G natural, distinct and sorted in
ascending order numbers in the range 1..25 representing the weights'
values.
Output
Sample Input
2 4
-2 3
3 4 5 8
Sample Output
2
/*
01背包 题意:C个钩码(2—20) G个物品(2—20) 钩码位置(-25—25) 物品重量(0—20) 物品都用上且天平平衡有多少种方案 dp[i][j]:挂前i个物品达到状态j 状态j的取值范围时-25*25*20——25*25*20 所以j取(-7500--7500) 防止出现负值 所以令j==15000 即j==7500时为平衡位置
想~~每次挂砝码都会影响天平的平衡 即状态j 影响因素是力臂=c[i]*w[k] (n,m影响它的取值)
挂前i个物品时状态是dp[i-1][j] 则挂第i个物品后状态变为dp[i][j+c[i]*w[k]]
假设dp[i-1][j]的值是num 那么 dp[i][j+c[i]*w[k]]也是num
即dp[i][j+c[i]*w[k]]+=dp[i-1][j] 前面状态影响后面的 */
#include <iostream>
#include <string.h>
#include <stdio.h> int dp[][]; ///前i个物品达到j的状态有的dp[][]种 int main()
{
int n,m; ///钩子个数 砝码个数
int c[]; ///钩子的位置
int w[]; ///砝码重量 scanf("%d%d",&n,&m); for(int i=;i<=n;i++)
scanf("%d",&c[i]);
for(int j=;j<=m;j++)
scanf("%d",&w[j]); memset(dp,,sizeof(dp));
dp[][]=; ///因为防止出现负数情况 所以dp[][1500]了 同时dp[][7500]是平衡状态 for(int i=;i<=m;i++)
{
for(int j=;j<=;j++)
{
for(int k=;k<=n;k++)
{
dp[i][j+c[k]*w[i]]+=dp[i-][j]; ///核心 在前面介绍
}
}
}
printf("%d\n",dp[m][]);
}
poj 1837 01背包的更多相关文章
- poj 2184 01背包变形【背包dp】
POJ 2184 Cow Exhibition Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 14657 Accepte ...
- POJ 2184 01背包+负数处理
Cow Exhibition Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 10200 Accepted: 3977 D ...
- POJ 3628 01背包 OR 状压
思路: 1.01背包 先找到所有奶牛身高和与B的差. 然后做一次01背包即可 01背包的容积和价格就是奶牛们身高. 最后差值一减输出结果就大功告成啦! 2. 搜索 这思路很明了吧... 搜索的确可以过 ...
- poj 1837 Balance(背包)
题目链接:http://poj.org/problem?id=1837 Balance Time Limit: 1000MS Memory Limit: 30000K Total Submissi ...
- Proud Merchants(POJ 3466 01背包+排序)
Proud Merchants Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others) ...
- POJ 3624 01背包
初学DP,用贪心的思想想解题,可是想了一个多小时还是想不出. //在max中的两个参数f[k], 和f[k-weight[i]]+value[i]都是表示在背包容量为k时的最大价值 //f[k]是这个 ...
- POJ之01背包系列
poj3624 Charm Bracelet 模板题 没有要求填满,所以初始化为0就行 #include<cstdio> #include<iostream> using na ...
- (01背包变形) Cow Exhibition (poj 2184)
http://poj.org/problem?id=2184 Description "Fat and docile, big and dumb, they look so stupid ...
- [POJ 2184]--Cow Exhibition(0-1背包变形)
题目链接:http://poj.org/problem?id=2184 Cow Exhibition Time Limit: 1000MS Memory Limit: 65536K Total S ...
随机推荐
- git报“commiter email "root@localhost.localdomain"does not match your user account”
首先检查账户邮箱配置是否正确,检查方法: git config --list 发现邮箱及帐号配置正确,但是git push时仍然报如题错误: 原因:git执行add.commit 时已经记录下了做了该 ...
- 常用MFC宏
最近我在用MFC开发一个智能家居监控平台的软件(用到了MSCOMM串口通信控件),当我通过在一个对话框类A中定义另一个对话框类B的对象访问B的public成员时,提示不可访问.后来经过多天的向朋友求救 ...
- a label can only be part of statement and a declaratioin is not a statement
参考资料: https://stackoverflow.com/questions/18496282/why-do-i-get-a-label-can-only-be-part-of-a-statem ...
- Homestead 修改 Homestead.yaml 文件后 vagrant up 报错的问题
一般情况是 TAB 和空格的问题. 虽然表面看来,缩进是一致的. 但是 TAB 没能替换为空格,从而导致问题. 解决: $ sudo vim /etc/vim/vimrc.local syntax o ...
- BIO,NIO,AIO(NIO2)的理解
写在前面,这里所说的IO主要是强调的网络IO 1.BIO(同步并阻塞) 客户端一个请求对应一个线程.客户端上来一个请求(最开始的连接以及后续的IO请求),服务端新建一个线程去处理这个请求,由于线程总数 ...
- unwind
unwind:可以将一个列表展开为一个行的序列1.列表 unwind[1,2,3]as x return x2.创建唯一列表with[1,2,3,3]as coll unwind coll as x ...
- js中将斜杠\替换的方法
js中将/替换的方法replace(/\//g, '-') 中间涉及到js的一些转义问题,试了几个方法,发现这个可以,就记下来.
- 复制粘贴容易犯的错误 eclipse
有时候复制原有的代码到xml文件中,会提示某文件没有找到,一般该文件名字改成别的了,这时候为了解决这问题一般需要对这个文件重命名
- 2017/2/12:springMVC的简单文件上传跟拦截器
1.写文件上传的界面jsp代码如下重点为文件上传标签的类型 2.写登录成功跟失败的界面:成功自己写 3.写springMVC的文件上传的controller的方法 4.最后一步配置spring-ser ...
- 使用 IntelliTrace 调试应用程序
IntelliTrace 如何能够大幅改善您的日常开发活动,并提升您快速轻松诊断问题的能力,而不必重新启动应用程序和使用传统的“中断-单步执行-检查”技术进行调试.介绍了组织如何能够通过在测试过程中收 ...