POJ1742Coins】的更多相关文章

Coins Time Limit: 3000MS   Memory Limit: 30000K Total Submissions: 32309   Accepted: 10986 Description People in Silverland use coins.They have coins of value A1,A2,A3...An Silverland dollar.One day Tony opened his money-box and found there were some…
背包专题:http://www.cnblogs.com/qq188380780/p/6409474.html //多重背包 #include<cstdio> ],a[][]; int Room,ans; void init() { b[] = ; ; i<=Room; ++i) b[i] = ; ans = ; } void zero_one_bag(int v) { for(int i=Room; i>=v; --i) if(!b[i] && b[i-v]) {…
Coins Time Limit: 3000MS   Memory Limit: 30000K Total Submissions: 32309   Accepted: 10986 Description People in Silverland use coins.They have coins of value A1,A2,A3...An Silverland dollar.One day Tony opened his money-box and found there were some…
People in Silverland use coins.They have coins of value A1,A2,A3...An Silverland dollar.One day Tony opened his money-box and found there were some coins.He decided to buy a very nice watch in a nearby shop. He wanted to pay the exact price(without c…
题目:http://poj.org/problem?id=1742 可以正常地多重背包.但是看了<算法竞赛入门经典>,收获了贪心的好方法. 因为这里只需知道是否可行,不需更新出最优值之类的,所以: 新出来一个可行的必然是只有用了当前面值才可行的,就记录下使它可行最少用多少个当前面值,以资后续限制在 c [ i ] 个以内. use 数组每次清零,只记当前面值用了几个就行. 之所以正常多重背包不能这样,是因为当前体积要不要通过若干个当前物品来更新与体积为 j - a [ i ] 时 有无用/用了…
People in Silverland use coins.They have coins of value A1,A2,A3...An Silverland dollar.One day Tony opened his money-box and found there were some coins.He decided to buy a very nice watch in a nearby shop. He wanted to pay the exact price(without c…
描述 http://poj.org/problem?id=1742 n种不同面额的硬币 ai ,每种各 mi 个,判断可以从这些数字值中选出若干使它们组成的面额恰好为 k 的 k 的个数. 原型: n种不同大小的数字 ai ,每种各 mi 个,判断是否可以从这些数字之中选出若干使它们的和恰好为 k . Coins Time Limit: 3000MS   Memory Limit: 30000K Total Submissions: 33732   Accepted: 11453 Descrip…
参考:http://www.hankcs.com/program/cpp/poj-1742-coins.html 题意:给你n种面值的硬币,面值为a1...an,数量分别为c1...cn,求问,在这些硬币的组合下,能够多少种面值,该面值不超过m 思路:设d[i][j]——前i种硬币,凑成总值j时,第i种硬币所剩余的个数. 默认d[i][j] = -1,代表无法凑成总值j 转移方程为,若d[i-1][j]≥0,代表前i-1种已能够凑成j,那么就不必花费第i种硬币,所以d[i][j] = c[i]…
POJ3176-Cow Bowling 题目大意:现有n行数,以金字塔的形式排列,即第一行一个数字,第二行2个数字,依次类推,现在需要找一条从第一层到第n层的路线,使得该路线上的所有点的权值和最大 思路:根据分析可以得出状态转移方程:dp[i][j]=max(dp[i-1][j],dp[i-1][j-1]),dp[i][j]表示以第i行第j个位置作为终点的的线路中的最大权值. #include <iostream> using namespace std; ; int s[N][N]; int…
01 背包 题意: 在N件物品取出若干件放在容量为W的背包里,每件物品的体积为W1,W2……Wn(Wi为整数),与之相对应的价值为P1,P2……Pn(Pi为整数).求背包能够容纳的最大价值. f[i][v] = max{ f[i-1][v] , f[i-1][ v-c[i] ] + w[i] } #include <iostream> #include <cstdio> #include <cmath> using namespace std; + ; int n ,w…
前言 大名鼎鼎的男人八题,终于见识了... 题面 http://poj.org/problem?id=1742 分析 § 1 多重背包 这很显然是一个完全背包问题,考虑转移方程: DP[i][j]表示用前i种硬币能否取到金额j,ture表示可以,false表示不行. 则有 DP[i][j] = DP[i - 1][j] | DP[i - 1][j - k * Ai], 0 ≤ k ≤ Ci, j - k * Ai ≥ 0 这是一个O(N3)的算法,考虑到数据范围1 ≤ N ≤ 100, M ≤…