Fighting (完全背包问题)
来源:互联网 发布:linux中的find命令 编辑:程序博客网 时间:2024/06/04 01:04
Fighting
Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^
题目描述
怒海争锋是一个新游戏,类似于星际争霸。在这个游戏中,敌人建造防御塔,血量为L。玩家有一个军事工厂,可以生产N种战斗舰艇。第i个战舰的生产时间为ti,这战舰每秒钟可以让塔损失血量为li。如果塔的寿命低于或等于0,玩家获胜。注意,在每一秒内,军事工厂只能选择一种战斗船生产或什么也不做。选择后的战斗舰艇生产时可以同时生产。不是生产完一个再生产下一个。
你的任务是找出玩家赢得比赛的最少时间。
输入
有多组输入。
每组的第一行包含两个整数N(1≤N≤30)和L (1≤L≤330),N是军事工厂中有N种战舰,L是防御塔的血量。然后以下N行,每一行包含两个整数ti(1≤ti≤20)第i个战舰的生产时间和li(1≤li≤330)第i个战斗舰艇对塔造成的伤害。
输出
为每个测试用例输出一行。一个整数表示玩家赢得比赛的最少时间。
示例输入
1 11 13 1001 103 2010 100
示例输出
25
#include <stdio.h>#include <string.h>#include <stdlib.h>int main(){ int n,l,i,j; int dp[1010],time[1001],w[1001]; while (~scanf ("%d%d",&n,&l)) { int t = 20; memset(dp,0,sizeof (dp)); memset(w,0,sizeof (w)); memset(time,0,sizeof (time)); for (i = 0;i < n;i++) { scanf ("%d%d",time + i,w + i); } for (i = 0;i < n;i++) { for (j = time[i];j <= 20;j++)//时间无固定要求,所以自定义题目所述(<=600) { if(dp[j - time[i]] + w[i]* (j - time[i]) > dp[j]) //判断 是否选择当前 飞船 { dp[j] = dp[j - time[i]] + w[i] * (j - time[i]); } if (dp[j] >= l && j < t)//符合条件的有多组,选择用时最少的 { t = j; } } } printf ("%d\n",t); } return 0;}
0 0
- Fighting (完全背包问题)
- nyoj311完全背包(完全背包问题)
- Fighting 背包
- 背包问题(01背包,完全背包,多重背包)
- 背包问题(01背包,完全背包,多重背包)
- 背包(01背包、完全背包、多重背包)问题总结
- 背包问题(01背包,完全背包,多重背包)
- 背包问题(01背包 + 完全背包 + 多重背包)
- 背包问题(01背包,完全背包,多重背包)
- 背包问题模板(01背包,完全背包,多重背包)
- 经典背包问题----(01背包、完全背包、多重背包)
- 背包问题(1)完全背包
- 背包问题2(完全背包)
- 背包问题(一):完全背包
- 完全背包问题(二)
- HDU1114(完全背包问题)
- 背包问题(01背包和完全背包)
- 背包问题(0/1背包,完全背包)
- public class CharUtil {
- PROPAGATION_REQUIRES_NEW 和 PROPAGATION_NESTED区别
- 【转】ARM汇编 MOV PC,LR
- Notice: Undefined variable: data in /var/www/html/bbeden/modoer/ecshop/includes/lib_base.php on line
- 《学习OpenCV》打印矩阵
- Fighting (完全背包问题)
- 理解JavaScript的caller,callee,call,apply
- 把过程与函数说透
- 小P寻宝记(01背包)
- CUGB图论专场2:A - Antenna Placement 二分图最小边覆盖
- 把触发器说透
- nginx下使用cgi也可以像apache一样了!
- 自定义ScrollView 下拉上拉回弹,阻尼效果
- emacs个人配置