zju 2014/ hdoj 1114-Piggy-Bank
来源:互联网 发布:方丈wtybill知乎百科 编辑:程序博客网 时间:2024/04/30 03:11
/*
zju 2014/ hdoj 1114-Piggy-Bank
written by lky
4 lky 109MS 0K 916B C++ 2008-03-06 14:48:16
动态规划->
状态表示:dp[i]表示容量为i时达到的最小值,如果不可能则是-1
状态转移:由dp[i]产生出dp[k],
dp[k] = min(dp[k], dp[i]+a[j].v) dp[k]!=-1
dp[k] = dp[i]+a[j].v dp[k] =-1
(k = i+a[j].w, j=1-n, k<=m)
优化:先根据物品的重量从小到大的排序,然后再dp
*/
#include<iostream>
#include <algorithm>
using namespace std;
struct Item
{
int v,w;
};
bool comp(Item i1, Item i2)
{
if(i1.w < i2.w)
return true;
return false;
}
int main()
{
int dp[10001];
Item a[501];
int n, m, N;
int i, j, k;
int m1, m2;
scanf("%d", &N);
while (N--)
{
scanf("%d%d", &m1, &m2);
m = abs(m1-m2);
scanf("%d", &n);
for (i=0; i<n; ++i)
{
scanf("%d%d",&a[i].v, &a[i].w);
}
memset(dp, -1, sizeof(dp));
dp[0] = 0;
sort(a, a+n, comp);
for (i=0; i<=m; ++i)
{
if(dp[i] != -1)
{
for (j=0; j<n; ++j)
{
k = i + a[j].w;
if(k > m)
break;
if(dp[k]==-1 || dp[k] > dp[i]+a[j].v)
dp[k] = dp[i]+a[j].v;
}
}
}
if(dp[m] == -1)
printf("This is impossible./n");
else
printf("The minimum amount of money in the piggy-bank is %d./n", dp[m]);
}
return 0;
}
zju 2014/ hdoj 1114-Piggy-Bank
written by lky
4 lky 109MS 0K 916B C++ 2008-03-06 14:48:16
动态规划->
状态表示:dp[i]表示容量为i时达到的最小值,如果不可能则是-1
状态转移:由dp[i]产生出dp[k],
dp[k] = min(dp[k], dp[i]+a[j].v) dp[k]!=-1
dp[k] = dp[i]+a[j].v dp[k] =-1
(k = i+a[j].w, j=1-n, k<=m)
优化:先根据物品的重量从小到大的排序,然后再dp
*/
#include<iostream>
#include <algorithm>
using namespace std;
struct Item
{
int v,w;
};
bool comp(Item i1, Item i2)
{
if(i1.w < i2.w)
return true;
return false;
}
int main()
{
int dp[10001];
Item a[501];
int n, m, N;
int i, j, k;
int m1, m2;
scanf("%d", &N);
while (N--)
{
scanf("%d%d", &m1, &m2);
m = abs(m1-m2);
scanf("%d", &n);
for (i=0; i<n; ++i)
{
scanf("%d%d",&a[i].v, &a[i].w);
}
memset(dp, -1, sizeof(dp));
dp[0] = 0;
sort(a, a+n, comp);
for (i=0; i<=m; ++i)
{
if(dp[i] != -1)
{
for (j=0; j<n; ++j)
{
k = i + a[j].w;
if(k > m)
break;
if(dp[k]==-1 || dp[k] > dp[i]+a[j].v)
dp[k] = dp[i]+a[j].v;
}
}
}
if(dp[m] == -1)
printf("This is impossible./n");
else
printf("The minimum amount of money in the piggy-bank is %d./n", dp[m]);
}
return 0;
}
- zju 2014/ hdoj 1114-Piggy-Bank
- HDOJ 1114 Piggy-Bank
- Piggy-Bank hdoj 1114
- hdoj 1114 Piggy-Bank
- HDOJ 1114 Piggy-Bank
- 【hdoj 1114】Piggy-Bank
- HDOJ-1114 Piggy-Bank
- HDOJ -- 1114 Piggy-Bank
- hdu/hdoj 1114 Piggy-Bank
- HDOJ HDU 1114 Piggy-Bank
- HDOJ 1114 Piggy-Bank 完全背包
- HDOJ 1114 Piggy-Bank (完全背包)
- HDOJ 1114 Piggy-Bank (多重背包)
- HDOJ--1114--Piggy-Bank【背包问题】
- HDOJ 1114 Piggy-Bank 杭电 ACM
- HDOJ 1114 Piggy-Bank(完全背包,水)
- HDOJ-1114 Piggy-Bank 完全背包
- HDOJ 1114 Piggy-Bank(完全背包)
- 用.net开发 sql server 2005 的自定义函数
- 如何避免内存频繁地申请与释放
- Win2003远程管理工具tsmmc移值到XP
- JS切分字符串
- flash url
- zju 2014/ hdoj 1114-Piggy-Bank
- 数学建模相关网址
- Apache + Subverion(windows编)
- 隐藏(new)和方法重写(override)和重载(overload)的区别
- 地磅称量系统之(4~5)在类库中创建第一个BaseForm
- 无聊的面试题
- 贾金斯式的人永远不会成功
- EJB的学习
- 地磅称量系统之(6)让类库编译成dll文件