寒冰王座

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 13532    Accepted Submission(s): 6876

Problem Description
不死族的巫妖王发工资拉,死亡骑士拿到一张N元的钞票(记住,只有一张钞票),为了防止自己在战斗中频繁的死掉,他决定给自己买一些道具,于是他来到了地精商店前.

死亡骑士:"我要买道具!"

地精商人:"我们这里有三种道具,血瓶150块一个,魔法药200块一个,无敌药水350块一个."

死亡骑士:"好的,给我一个血瓶."

说完他掏出那张N元的大钞递给地精商人.

地精商人:"我忘了提醒你了,我们这里没有找客人钱的习惯的,多的钱我们都当小费收了的,嘿嘿."

死亡骑士:"......"

死亡骑士想,与其把钱当小费送个他还不如自己多买一点道具,反正以后都要买的,早点买了放在家里也好,但是要尽量少让他赚小费.

现在死亡骑士希望你能帮他计算一下,最少他要给地精商人多少小费.

 
Input
输入数据的第一行是一个整数T(1<=T<=100),代表测试数据的数量.然后是T行测试数据,每个测试数据只包含一个正整数N(1<=N<=10000),N代表死亡骑士手中钞票的面值.

注意:地精商店只有题中描述的三种道具.

 
Output
对于每组测试数据,请你输出死亡骑士最少要浪费多少钱给地精商人作为小费.
 
Sample Input
2
900
250
 
Sample Output
0
50
 
Author
Ignatius.L
 
完全背包变形,令三中物品cost和val分别是150、200、350,答案就是n-n块钱做多能买到的物品价值。
const int maxn = ;

int cost[] = { , , , ,  };
int dp[maxn];
int m; int main() {
int T;
scanf("%d", &T);
while (T --) {
scanf("%d", &m);
memset(dp, , sizeof(dp));
for (int i = ; i <= ; i ++) {
for (int j = cost[i]; j <= m; j ++) {
dp[j] = max(dp[j-cost[i]] + cost[i], dp[j]);
}
}
printf("%d\n", m - dp[m]);
} return ;
}

最新文章

  1. 在Unity环境下使用抽象和接口
  2. VOF 方法捕捉界面--粘性剪切流动算例
  3. Chrome和Firefox浏览器执行new Date() 函数传参数得到不同结果的陷阱
  4. Des加解密算法
  5. 粗略读完opengl
  6. 修改searchbar 取消 字体 颜色
  7. SQLserver删除某数据库中所有表 方法 二
  8. Shell 编程基础之基本语法结构汇总
  9. YII 快速创建项目GII
  10. IT项目经理应具备的十大软技能
  11. ++i和i++哪个效率高?
  12. 【WebSocket初探 】
  13. 【转】Java线程与Linux内核线程的映射关系
  14. 树莓派3B+ 安装系统
  15. 使用Eclipse、Tomcat遇到的一些问题
  16. jqgrid表头上面再加一行---二级表头
  17. [LeetCode] Palindrome Permutation I &amp; II
  18. jquery 的each函数
  19. 洛谷 P1296奶牛的耳语 题解
  20. HTML之实现页面缓存

热门文章

  1. Qt 个性化标题栏,自定义标题栏
  2. Eureka搭建
  3. kaldi常用文件查看指令
  4. POJ 2161 Chandelier(动态规划)
  5. PhpStorm 配置IDE
  6. 软工实践 - 第二十五次作业 Beta 冲刺(3/7)
  7. Log4Net讲解
  8. IO调度
  9. 在 Linux 安装 JDK 和 tomcat(菜鸡级别)
  10. sqoop将oracle数据导入hdfs集群