版权声明:记笔记~~~ https://blog.csdn.net/weixin_42765557/article/details/88085553
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1248 寒冰王座Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Problem Description 不死族的巫妖王发工资拉,死亡骑士拿到一张N元的钞票(记住,只有一张钞票),为了防止自己在战斗中频繁的死掉,他决定给自己买一些道具,于是他来到了地精商店前. Input 输入数据的第一行是一个整数T(1<=T<=100),代表测试数据的数量.然后是T行测试数据,每个测试数据只包含一个正整数N(1<=N<=10000),N代表死亡骑士手中钞票的面值. Output 对于每组测试数据,请你输出死亡骑士最少要浪费多少钱给地精商人作为小费.
|
解题思路
完全背包模板题,3种商品,每个商品的价值和体积一样。付的钱作为背包容量,最后用 付的钱-背包最大价值 即为答案。
AC代码
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
struct Good {
int w,c;
}g[3];
int Max[10005];
int main()
{
int T,n;
cin >> T;
g[0].w = g[0].c = 150;
g[1].w = g[1].c = 200;
g[2].w = g[2].c = 350;
while( T--)
{
cin >> n;
memset(Max,0,sizeof Max);
for(int i=0;i<3;i++)
for(int j=g[i].c;j<=n;j++)
Max[j] = max(Max[j],Max[j-g[i].c]+g[i].w);
cout << n-Max[n] << endl;
}
return 0;
}