hdu 2159(二维完全背包)
2013-03-11 21:06
323 查看
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2159
思路:dp[j][l]表示消耗了j忍耐度,杀了l个怪后获得的经验值;最后只要对dp扫一遍,找出是否有大于等于n的值,如果有,这保留此时的消耗的忍耐值;否则,输出-1;
View Code
思路:dp[j][l]表示消耗了j忍耐度,杀了l个怪后获得的经验值;最后只要对dp扫一遍,找出是否有大于等于n的值,如果有,这保留此时的消耗的忍耐值;否则,输出-1;
View Code
#include<iostream> const int N=110; using namespace std; struct Node{ int value,cost; }node ; int dp ; int main(){ int n,m,k,s; while(~scanf("%d%d%d%d",&n,&m,&k,&s)){ for(int i=0;i<k;i++){ scanf("%d%d",&node[i].value,&node[i].cost); } memset(dp,0,sizeof(dp)); for(int i=0;i<k;i++){ for(int j=node[i].cost;j<=m;j++){ //限定杀怪的个数 for(int l=1;l<=s;l++){ dp[j][l]=max(dp[j][l],dp[j-node[i].cost][l-1]+node[i].value); } } } int flag=false,k; for(int j=0;j<=m;j++){ if(flag)break; for(int l=1;l<=s;l++){ if(dp[j][l]>=n){ flag=true; k=j; break; } } } if(flag){ printf("%d\n",m-k); }else printf("%d\n",-1); } return 0; }
相关文章推荐
- HDU-2159-FATE(二维完全背包)
- hdu 2159 二维完全背包
- HDU 2159 FATE (二维费用完全背包)
- HDU 2159 FATE (二维完全背包)
- HDU 2159 FATE (二维完全背包
- hdu 2159 FATE(二维完全背包)
- hdu 2159 fate(二维完全背包)
- hdu 2159(二维完全背包)
- hdu 2159 fate(二维完全背包)
- hdu 2159 二维费用完全背包
- HDU 2159 FATE (二维完全背包)
- FATE (HDU_2159) 二维完全背包 + 二进制优化
- HDU 2159 FATE(二维完全背包)
- HDU 2159 FATE(二维完全背包)
- hdu2159二维完全背包
- hdu 2159 二维背包 完全
- HDU 2159 FATE【二维完全背包】
- HDU 2159---FATE【二维完全背包】
- HDU - 2159 FATE(二维完全背包)
- HDU 2159 Fate(二维完全背包)