poj1837挂砝码】的更多相关文章

解法(背包DP问题) (下为转) 其实感觉 像此题这种类型的并不属于dp范畴 虽然程序看起来使用的是递推这一过程,但总不能说开个二重循环就是dp吧 如果只从求解上来讲(不考虑数据值的范围), 只有枚举这唯一途径, 而此题的复杂度为O(20^20), 大约等于 10^26, 微机是很难在短时间内求解的. 而此题还有另一个限制, 就是数据值的范围, 虽然状态数那么多, 但是它们的范围有限这个时候, 状态产生大量重复, 于是, 程序可以优化为压缩这些重复状态, 从而减少开销 在实现的过程中, 确实划分…
题意:给出一个天平,给出c个钩子,及c个钩子的位置pos[i],给出g个砝码,g个砝码的质量w[i],问当挂上所有的砝码的时候,使得天平平衡的方案数, 用dp[i][j]表示挂了前i个砝码时,平衡点为j时的总的方案数, 状态转移为第i个砝码是否挂上,如果要挂上第i个砝码的话,j>=pos[i]*w[i](力矩=力臂*力) 因为最大的力矩为 20*15*25=150000 #include<iostream> #include<cstdio> #include<cstri…
题目: http://poj.org/problem?id=1837 感觉dp的题目都很难做,这道题如果不看题解不知道憋到毕业能不能做出来,转化成了01背包问题,很神奇.. #include <stdio.h> #include <string.h> ][]; ], w[]; int main() { int n, m; scanf("%d %d", &n, &m); //天平上有n个砝码位置 ; i <= n; i++) { scanf(…
题目链接 题意: 在一个宽为r 的房间里, 有s个砝码, 每个天平的一端要么挂砝码, 要么挂另一个天平, 并且每个天平要保持平衡. 求使得所有砝码都放在天平上, 且总宽度不超过房间宽度的最大值. 思路: 每个节点只能有两个子节点, 这是一棵二叉树的形式. 通过枚举二叉树的形态, 再枚举每一个叶子节点所放砝码, 最后再计算每个方案的宽度并计算答案. 每增加一个天平, 那么可以放砝码数 + 1. note: 坑在0的输出了, 用primtf("%.9lf\n", 0)输出来的是0  用0.…
Balance Time Limit: 1000 MS Memory Limit: 30000 KB 64-bit integer IO format: %I64d , %I64u Java class name: Main [Submit] [Status] [Discuss] Description Gigel has a strange "balance" and he wants to poise it. Actually, the device is different fr…
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…
题意:给你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…
题目大意: 有一个天平,天平左右两边各有若干个钩子,总共有C个钩子(每个钩子有相对于中心的距离,左负右正),有G个钩码,求将钩码全部挂到钩子上使天平平衡的方法的总数. 将每个砝码看作一组,组内各个物品的体积为每个挂钩与该砝码形成的力矩,背包总体积严格为0,这便是分组背包计数问题(特殊点:每一组必须出一个物品,而不是至多出一个物品).由于c++不允许负的数组下标,所以每次更新时,j要加上offsetJ. 实现分组背包计数问题时,可以用填表法(找以前节点求自己值)(DP1)或刷表法(找以后节点更新以…