uva10306(dp)
2014-11-27 21:14
323 查看
就是给你m种硬币 ,和一个目标值s.
每种硬币有两种值,就交x,y把.
现在你要选出几枚硬币,满足 这些硬币的x的和 sumx 和这些硬币的y的和sumy sumx的平方 + sumy的平方 = s的平方.
问最少几枚硬币
首先dp[ i ][ j ] 是代表当左边值的和为 i ,右边值的和为 j 时 ,最少要几枚硬币..
接下去就是背包的思想.假如你现在有两个硬币,x值,y值分别1.3 2 4...
那么你的dp [ i ][ j ] = max(dp[ i - 1][ j - 3] + 1 , dp[i - 2] [j - 4] +1)
为什么呢.因为减掉这枚硬币的值之后,所能达到的最优解 ,在加上这枚硬币(也就是+1),那么就是取这枚硬币达到的最优解.
然后遍历选出满足sumx的平方 + sumy的平方 = s的平方的i,j中值最小的那个.
每种硬币有两种值,就交x,y把.
现在你要选出几枚硬币,满足 这些硬币的x的和 sumx 和这些硬币的y的和sumy sumx的平方 + sumy的平方 = s的平方.
问最少几枚硬币
首先dp[ i ][ j ] 是代表当左边值的和为 i ,右边值的和为 j 时 ,最少要几枚硬币..
接下去就是背包的思想.假如你现在有两个硬币,x值,y值分别1.3 2 4...
那么你的dp [ i ][ j ] = max(dp[ i - 1][ j - 3] + 1 , dp[i - 2] [j - 4] +1)
为什么呢.因为减掉这枚硬币的值之后,所能达到的最优解 ,在加上这枚硬币(也就是+1),那么就是取这枚硬币达到的最优解.
然后遍历选出满足sumx的平方 + sumy的平方 = s的平方的i,j中值最小的那个.
#include<stdio.h> #include<string.h> const int N = 305; const int INF = 0x3f3f3f3f; struct coin { int x ; int y ; }c ; int m,mm ,s; int dp ; void solve() { for(int i = 0 ; i <= s ;i++) { for (int j = 0 ; j <= s ;j++) { for (int k = 0 ; k < m ;k++) { if(i - c[k].x >= 0 && j - c[k].y >= 0) dp[i][j] = dp[i][j] < dp[i - c[k].x][j - c[k].y] + 1 ? dp[i][j] : dp[i - c[k].x][j - c[k].y] + 1; } } } for (int i = 0 ; i <= s ;i++) { for (int j = 0 ; j <= s ; j++) { if (i * i + j * j == s * s && dp[i][j] < mm) mm = dp[i][j]; } } } int main () { int t; scanf("%d",&t); while(t--) { memset(dp , INF ,sizeof(dp)); dp[0][0] = 0; scanf("%d%d",&m ,&s); for (int i = 0 ; i < m ;i++) { scanf("%d%d",&c[i].x , &c[i].y); } mm = INF; solve(); if(mm == INF) printf("not possible\n"); else printf("%d\n",mm); } }
相关文章推荐
- uva 10306 简单DP
- e-Coins - UVa 10306 dp背包
- UVA 10306--e-Coins+dp
- uva 1379 - Pitcher Rotation(dp)
- UVa 1401 Remember the Word(Trie+DP)
- Make Palindrome - UVa 10453 dp
- uva 1371 - Period(二分+dp)
- 【uva-11584】Partitioning by Palindromes(dp)
- 例题9-2 UVA - 437 The Tower of Babylon 巴比伦塔(DGA-DP)
- uva 12105 - Bigger is Better(dp)
- uva 11795 Mega Man's Mission(动态规划-状态压缩DP)
- Uva 437 DAG上的DP 记忆化搜索实现
- 树形DP(Hali-Bula的晚会,uva 1220)
- Prince and Princess - UVa 10635 dp
- uva 10891 sum游戏(区间dp)
- UVA1252 Twenty Questions dp & set
- UVA-1424-Salesmen(DP)
- uva 1534 - Taekwondo(dp+贪心)
- UVA111 (DP)
- UVA 10003 Cutting Sticks(区间 DP)