摘要: http://acm.hdu.edu.cn/showproblem.php?pid=1171题意: 给定你每种设备的价值和数量 , 要你将这些设备平分( 就算不是刚好平分也要尽量接近).坑爹: 一开始看到这题是一点思路都没有 , 以为一定要刚好平分 . 数组要开到 50 * 50 * 100 .解法: 只要将所有设备的价值加起来(sum) , 然后利用多重背包 , 但"背包"的容量不是sum , 而是sum/2 , 这样就可以找出当"背包"的容量为总价值一半的时候的最优情况 , 然后另外一边分到的设备就是 sum - DP[sum/2] .View Co 阅读全文
posted @ 2012-09-15 19:22 pc.... 阅读(185) 评论(0) 推荐(0)
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=1114题意: 有T组测试数据,后面的E和F分别表示存钱罐空的时候的重量和满了的时候的重量 , 然后有个m ,代表下面有 m 种钱币 , 每种钱币分别有他的面值和重量 , 要你求出当存钱罐满的时候 , 存钱罐中至少有多少钱.坑爹: 因为他是要求出最少有多少钱 , 所以要 DP[ j ] = min ( DP [j ] , DP[ j - cost ] + weight )还有一点要注意的是DP数组的初始化 , 要初始化为最大值 , 因为它每次都要求最小的一种情况 , DP[0] = 0是递推的一个开始.解法.. 阅读全文
posted @ 2012-09-15 17:45 pc.... 阅读(259) 评论(4) 推荐(0)
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=1237题意: 给你一个只有+ - * / 的计算表达式 , 要你求出结果.坑爹: 一开始我只是以为只要在输入的时候遇到*或者/就弹出来进行计算,然后在到最后计算 + 和 - 的时候直接弹出一个一个计算,最后才发现原来在最后弹出来计算的时候要全部反过来,不能直接弹出就计算然后压入.解法: 遇到 * 或者 / 就弹出两个进行计算, 然后压入结果 , 到最后的时候把栈里的数字反过来,也就是用一个数组从0 - n开始存每一个出栈的数字 , 符号栈也是相同的操作 , 然后就可以进行正常的按顺序这样做 + 和 - ... 阅读全文
posted @ 2012-09-15 17:37 pc.... 阅读(278) 评论(0) 推荐(0)