poj1837】的更多相关文章

Balance Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 13717   Accepted: 8616 Description Gigel has a strange "balance" and he wants to poise it. Actually, the device is different from any other ordinary balance. It orders two arms…
//Accepted 2176 KB 47 ms //杠杆平横的条件:sum(c[i]*sum(g[j]))=0 // 所有的hook到原点的距离乘它上面挂着的物体的重量和的和为0 //对于一个hook,它到原点距离与所挂重量的乘积能达到的最大和值为15*25*20 //设dp[i][j]为前i个hook挂上物品后达到的sum为j的方案数 //则dp[i][j]+=dp[i-1][j-c[i]*g[j]](1<=j<=n) //前i个hook能达到j由前i-1个hook达到j-c[i]*g[j…
POJ1837http://poj.org/problem?id=1837 题目大意就是说有一个称上有C个挂钩,告诉你每个挂钩的位置,现在有G个重物,求是之平衡的方法数. 转化一下:DP[i][j]表示第i个物品挂上之后偏移量为j的方法数,所以最后结果就是DP[C][0].下标不能有负数,所以整体往右移动7500即可. #include <map> #include <set> #include <stack> #include <queue> #inclu…
解法(背包DP问题) (下为转) 其实感觉 像此题这种类型的并不属于dp范畴 虽然程序看起来使用的是递推这一过程,但总不能说开个二重循环就是dp吧 如果只从求解上来讲(不考虑数据值的范围), 只有枚举这唯一途径, 而此题的复杂度为O(20^20), 大约等于 10^26, 微机是很难在短时间内求解的. 而此题还有另一个限制, 就是数据值的范围, 虽然状态数那么多, 但是它们的范围有限这个时候, 状态产生大量重复, 于是, 程序可以优化为压缩这些重复状态, 从而减少开销 在实现的过程中, 确实划分…
题意:给你c(2<=c<=20)个挂钩,g(2<=g<=20)个砝码,求在将所有砝码(砝码重1~~25)挂到天平(天平长  -15~~15)上,并使得天平平衡的方法数....... 思路:(这是我木有想到的)将g个挂钩挂上的极限值:15*25*20==7500 那么在有负数的情况下是-7500~~7500   以0为平衡点...... 那可以将平衡点往右移7500个单位,范围就是0~~15000......这样就好处理多了 其实我觉得以后的题目中不仅仅天平问题可以这样处理,在有负数…
这几天抓住国庆的黄金时间(因为没有女朋友,天天刷题emmmm 其实还在肝少前还要捞秋刀鱼) ,重点攻克掉几个基本的地方:搜索.dp.图论.这几天的题目应该就是这些范围. 题意 原题的意思大概是这样的,有个天平,上面一堆挂钩,然后一堆砝码,砝码挂在挂钩上面,问平衡的情况有几种. 分析 显然不能穷举,因为O(2020)的复杂度太高了.我们不妨换个思路想:在我们放上一个砝码的时候,究竟发生了什么? 我们可以放在任何一个挂钩上,有c个决策.他们产生了什么影响?我们采取第ci个挂钩放置第i个物品时,令我们…
Balance Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 12995   Accepted: 8142 Description Gigel has a strange "balance" and he wants to poise it. Actually, the device is different from any other ordinary balance. It orders two arms…
Balance  POJ - 1837 题目大意: 有一个天平,天平左右两边各有若干个钩子,总共有C个钩子,有G个钩码,求将钩码全部挂到钩子上使天平平衡的方法的总数. 其中可以把天枰看做一个以x轴0点作为平衡点的横轴 输入: 2 4 //C 钩子数 与 G钩码数 -2 3 //负数:左边的钩子距离天平中央的距离:正数:右边的钩子距离天平中央的距离c[k] 3 4 5 8 //G个重物的质量w[i] /* 首先定义一个平衡度j的概念:当平衡度j=0时,说明天枰达到平衡, j>0,说明天枰倾向右边(…
题意: 有一根杆子,给出一些杆子上的位置,位置上能放重物,再给出一些重物的重量. 重物都需要被使用,但是位置不一定都要用到. 问你能有多少种方法让这个杆子平衡. 思路: 在位置上是0/1背包思想,取或不取. dp[]直接代表在该重量下有多少方案数. 最大的重量是20*25*15=7500; 因为还有负数,我们就直接2*7500; 然后看一下dp[7500]就好了. 0/1背包思想,转化为对于前i个物品在j重量有多少方案, 对于钩子,直接for一遍放一遍,更新. ps:如果dp数组要在一维上操作,…
题目大意: 有一个天平,天平左右两边各有若干个钩子,总共有C个钩子(每个钩子有相对于中心的距离,左负右正),有G个钩码,求将钩码全部挂到钩子上使天平平衡的方法的总数. 将每个砝码看作一组,组内各个物品的体积为每个挂钩与该砝码形成的力矩,背包总体积严格为0,这便是分组背包计数问题(特殊点:每一组必须出一个物品,而不是至多出一个物品).由于c++不允许负的数组下标,所以每次更新时,j要加上offsetJ. 实现分组背包计数问题时,可以用填表法(找以前节点求自己值)(DP1)或刷表法(找以后节点更新以…