题目:

此题目可转化为 01背包问题

dp[ i ] [ j ] [ l ] 表示i个精灵球、j点体力、l 个精灵时最多收复精灵的个数。

注意事项:开三维数组一定要贴着给的数据开,本题中开dp[1001][501][101],否则容易爆。

遍历范围:

  i:1~n

  j:1~m

  l:1~k

w[l]: 需要消耗的精灵球数量

v[l]:需要消耗的体力值

状态转移方程:

if(i>=w[l]&&j>v[l])   //余下的精灵球数量足够、体力也足够。

{

  dp[i][j][l]=max(dp[i-w[l]][j-v[l]][l-1]+1,dp[i][j][l-1]);// 前者为取第l 个精灵  后者为不取。

}

else

{

  dp[i][j][l]=dp[i][j][l-1];

}

最后输出捕捉最多精灵后剩余的最大体力。

k1指用掉多少点能量。

k1从m开始向下减,直到dp[n][k1][l]与dp[n][m][k]不相同时输出m-k1即余下的体力。

程序:

#include<bits/stdc++.h>
using namespace std;
int dp[1001][501][101];
int main()
{
int n,m,k,w[1010],v[1010];
cin>>n>>m>>k;
for(int i=1;i<=k;i++)
{
scanf("%d%d",&w[i],&v[i]);
}
int m2=m;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
for(int l=1;l<=k;l++)
{
if(i>=w[l]&&j>v[l])
{
if(dp[i-w[l]][j-v[l]][l-1]+1>dp[i][j][l-1])
{
m2-=v[l];
dp[i][j][l]=dp[i-w[l]][j-v[l]][l-1]+1;
}
else
{
dp[i][j][l]=dp[i][j][l-1];
}
}
else
{
dp[i][j][l]=dp[i][j][l-1];
}
}
}
}
cout<<dp[n][m][k]<<" ";
int k1=m;
while(k1>0&&dp[n][k1][k]==dp[n][m][k]) k1--;
cout<<m-k1;
return 0;
}

宠物小精灵之收服(等级考试4级 2021-03 T1)的更多相关文章

  1. 【背包DP】【OpenJudge4978】宠物小精灵之收服

    宠物小精灵之收服 总时间限制: 1000ms 内存限制: 65536kB [描述] 宠物小精灵是一部讲述小智和他的搭档皮卡丘一起冒险的故事. 一天,小智和皮卡丘来到了小精灵狩猎场,里面有很多珍贵的野生 ...

  2. NOI 4978 宠物小精灵之收服(二维背包)

    http://noi.openjudge.cn/ch0206/4978/ 描述 宠物小精灵是一部讲述小智和他的搭档皮卡丘一起冒险的故事. 一天,小智和皮卡丘来到了小精灵狩猎场,里面有很多珍贵的野生宠物 ...

  3. 【noi 2.6_4978】宠物小精灵之收服(DP)

    题意:小智有N个精灵球,皮卡丘有M的初始体力,有K个野生小精灵.要收服尽可能多的野生小精灵,并使皮卡丘的剩余体力最大. 解法:01背包问题,增多一维来存第二个条件.f[i][j][k]表示抓前i个野生 ...

  4. noi 4978 宠物小精灵之收服

    题目链接:http://noi.openjudge.cn/ch0206/4978/ 二维费用背包 在最后找还剩多少体力的时候,直接找到第二维,当结果 f[n][i] == f[n][m] 时,就说明已 ...

  5. AcWing 1022. 宠物小精灵之收服 二维费用背包

    #include<iostream> using namespace std ; ; int f[N][N]; int V1,V2,n; int main() { cin>>V ...

  6. Python全国二级等级考试(2019)

    一.前言 2018年9月随着全国计算机等级考试科目中加入“二级Python”,也确立了Python在国内的地位,猪哥相信Python语言势必会像PS那般普及.不久的将来,谁会Python谁就能获得女神 ...

  7. Python全国二级等级考试(2019)

    一.前言 2018年9月随着全国计算机等级考试科目中加入“二级Python”,也确立了Python在国内的地位,猪哥相信Python语言势必会像PS那般普及.不久的将来,谁会Python谁就能获得女神 ...

  8. 全国计算机等级考试二级Python语言程序设计考试大纲

    全国计算机等级考试二级Python语言程序设计考试大纲(2018年版) 基本要求 掌握Python语言的基本语法规则. 掌握不少于2个基本的Python标准库. 掌握不少于2个Python第三方库,掌 ...

  9. 【日语】日语能力考试N2级核心词汇必备—接续词

    日语能力考试N2级核心词汇必备—接续词 顺接 だから 因为......所以......(下文可用命令,意志劝诱等)その結果  其结果(口语,书面语都行,但是比较生硬)したがって  从而,因而(书面语, ...

  10. 日语能力考试N2级核心词汇必备—形容词

    日语能力考试N2级核心词汇必备—形容词 ありがたい·有難い 难得的,值得感谢的,真高兴的あかい·赤い 红色的,左翼的,共产主义的あさい·浅い 浅的,事物的程度等小的,色淡的,浅薄的,肤浅的あつい· 1 ...

随机推荐

  1. 从0搭建vue3组件库: Input组件

    本篇文章将为我们的组件库添加一个新成员:Input组件.其中Input组件要实现的功能有: 基础用法 禁用状态 尺寸大小 输入长度 可清空 密码框 带Icon的输入框 文本域 自适应文本高度的文本域 ...

  2. WebApi实现Token验证

    为什么要实现Token呢.在我们客户端发送请求时,如果没有校验数据是否合法那么就有可能造成非法请求泄露我们的数据 实现Token的思路 1.客户端通过用户名和密码来获取Token 通过自己的账号和密码 ...

  3. C++编程笔记(GPU并行编程-2)

    C++与CUDA 内存管理 封装 利用标准库容器实现对GPU的内存管理 #include <iostream> #include <cuda_runtime.h> #inclu ...

  4. python字符串常用方法介绍,基于python3.10

    python字符串常用方法-目录: 1.strip().lstrip().rstrip()2.removeprefix().removesuffix()3.replace()4.split().rsp ...

  5. 【Java SE进阶】Day13 Stream流、方法引用

    〇.总结 Stream流的方法:forEach.filter.map.count.limit.skip.concat(结合之前的Collectors接口) 方法引用:Lambda的其他类方法体相同,如 ...

  6. jmeter 之修改报告取样间隔时间以及APDEX 区间设置

    1.取样间隔时间设置 在jmeter 生成的报告中取样间隔默认设置的是1分钟,而非1秒,故样本间的间隔为1分钟,如下图所示: 取样间隔时间可通过修改bin/user.properties配置文件实现自 ...

  7. Django之ORM表高级操作、增删改查、外键字段连表查、单表查、跨表查、F/Q查询

    目录 一.如何开启自己的测试脚本? 二.对表数据的添加.更新.删除 1.create() 变态操作之批量插入数据 2.update() 3.delete() 4.如何查看QuerySet对象执行的sq ...

  8. elementui中 分页在vue中的使用

     template中: <el-pagination background layout="prev, pager, next" :total="total&quo ...

  9. Django(1) - 初识Django框架

    1.前言 该专栏学习笔记环境参数如下: Windows 10 Xampp/Navicat for MySQL Python 3.8+ Django 3.0.* Vue 2.6+ 开发工具: PyCha ...

  10. C# 正则表达式常用的符号和模式解析

    〇.正则表达式的基本语法符号 若只简单匹配固定字符串,则无需任何修饰符,例如:需要匹配字符串 77,则可直接写:new Regex("77"). 下边例举一下常用的符号:(知道下面 ...