首页 > 其他分享 >兀十三的星露谷冒险

兀十三的星露谷冒险

时间:2024-07-20 14:19:31浏览次数:10  
标签:10 十三 ll 星露 dfs leq int 能量 冒险

image

题面描述

最近,兀十三沉迷星露谷物语无法自拔。

在游戏中,她所操控的角色有两种属性:生命值H和能量值E,然而它们都是有上限的。她的物品栏中有n个可以分别恢复血量h和能量e的食物。现在假设当前生命值和能量值都为0,她想知道,自己至少要吃几个食物才能完全回满生命和能量(溢出上限的部分不计)?

输入格式

第一行输入 \(H\) 和 \(E\),表示生命值和能量值上限。

第二行输入一个整数 \(n\),表示有 \(n\) 个食物。

接下来 \(n\) 行,每行输入2个整数 \(h\) 和 \(e\),分别表示该食物能够恢复的生命值和能量值。

输出格式

输出最少需要的食物数量。

若没有一种方案能够恢复满生命和能量,则输出“-1”。

数据范围

\(1 \leq H, E \leq 10^{9}\)
\(1 \leq n \leq 20\)
\(-10^{9}\leq h, e \leq 10^9\)

输入样例

10 10
2
5 6
7 5

输出样例

2

题解

数据范围启发可以使用指数级别的做法,用dfs对每个食物做一遍取或不取的操作,求得最少种类。

#include <bits/stdc++.h>
#include <iostream>
using namespace std;

typedef long long ll;

const int N = 50;
ll H, E;
int res, n;
bool flag = 0;
struct food {
    ll h, e;
}f[N];

// 当前取到第i种食物,当前生命值为h,能量值为e,至少用了x种食物
void dfs(int i, ll h, ll e, int x) {
    if (i > n + 1) return;
    if (h >= H && e >= E) {
        flag = 1;
        res = min(res, x);
        return;
    }
    dfs(i + 1, h + f[i].h, e + f[i].e, x + 1); // 取
    dfs(i + 1, h, e, x); // 不取
}

int main() {
    cin >> H >> E;
    cin >> n;
    for (int i = 1; i <= n; ++i) cin >> f[i].h >> f[i].e;
    res = 30;
    dfs(1, 0, 0, 0);
    if (flag) cout << res << "\n";
    else cout << "-1\n";
    return 0;
}

标签:10,十三,ll,星露,dfs,leq,int,能量,冒险
From: https://www.cnblogs.com/wss114514/p/18313035

相关文章

  • 计算机的错误计算(三十三)
    摘要 计算机的错误计算(三十二)展示了Python的math库中exp(x)的计算精度问题。本节讨论Python的torch库中的exp(x)的计算精度问题。结果显示:与math库中的函数输出值具有同样的错误数字个数。     不妨仍然取(二十八)中的案例:1.2345,4.567,56.789,87.654,123.45,700......
  • 打卡第十三天(啊啊,我的键盘被我敲坏了,两个按键不灵敏了痛苦!这几天没有登陆boos求职,只学
    封装数据的隐藏,应禁止直接访问一个对象中数据的实际表示,应通过操作接口来访问,称为信息隐藏属性私有,get/set1.提高程序的安全性,保护数据2.隐藏代码的实现细节3.统一接口4.系统过客维护增加了packageoop.demo04;​//类privatepublicclassStudent{​  //......
  • YARA:第十三章-编写定制化模块
        目录1. 模块模板2.模块集成3.声明部分(Declarationsection)3.1基础类型(Basictypes)3.2结构(Structures)3.3 数组(Arrays)3.4字典(Dictionaries)3.5方法(Function)4.初始化和退出函数(Initialization and finalization)5.加载函数和退出加载函数(Loadand......
  • 《DNK210使用指南 -CanMV版 V1.0》第十三章 蜂鸣器实验
    第十三章蜂鸣器实验1)实验平台:正点原子DNK210开发板2)章节摘自【正点原子】DNK210使用指南-CanMV版V1.03)购买链接:https://detail.tmall.com/item.htm?&id=7828013987504)全套实验源码+手册+视频下载地址:http://www.openedv.com/docs/boards/k210/ATK-DNK210.html5)正点原子......
  • 第十三篇 Json模块
    JSON函数使用JSON函数需要导入json库:importjson。函数描述json.dumps将Python对象编码成JSON字符串json.loads将已编码的JSON字符串解码为Python对象json.dumpsjson.dumps用于将Python对象编码成JSON字符串。语法json.dumps(obj,skipkeys=False,en......
  • 「代码随想录算法训练营」第十三天 | 二叉树 part3
    110.平衡二叉树题目链接:https://leetcode.cn/problems/balanced-binary-tree/题目难度:简单文章讲解:https://programmercarl.com/0110.平衡二叉树.html视频讲解:https://www.bilibili.com/video/BV1Ug411S7my题目状态:通过思路:采用递归的方式,遍历每个节点的左右孩子的深度......
  • 腾讯特别调薪8%,年底十三薪分摊到月薪:福利升级还是另有深意?
    近日,一则关于腾讯公司薪酬政策调整的消息在业内外引起了不小的震动。据悉,腾讯宣布把校招生的房补从4000元每月调整为按15个月发放,并加在月薪base中。调整后,员工每月base工资增加3200元,多出来的三个月同年终奖一起发放。腾讯对校招生的房补标准每月4000元(北上广深,成都标准为2k),三......
  • 《Python 数据类型大冒险》
    一、数值类型1 整数类型与数学中的整数含义相同,无取值范围;整数包括二进制、八进制、十进制、十六进制等4种表示形式;二进制:以0b或0B开头:0b1101,-0B10;八进制:以0o或0O开头:0o456,-0O789;十进制:123,-321,0;十六进制:以0x或0X开头:0x1A,-0X2B。如:0b1010=0o12=10=0xa代......
  • 那些日子 二十三
    网上购买了新的电脑充电线,比官方正品便宜3倍。我现在真是什么都能找到便宜的,就连现在的房租都便宜正常价格个200多,可能是250。现在用完厕所我都是很小心翼翼的关上灯,保持节约的习惯。今天12点起床,想着计划怎么过双休,朋友圈还有人问我,怎么找到的双休的工作的,我还挺开心的,不过双休......
  • 代码随想录算法训练营第十三天 | 144.二叉树的前序遍历、94、二叉树的中序遍历、145、
    144.二叉树的前序遍历题目:.-力扣(LeetCode)思路:有递归法和使用栈来模拟递归的迭代法。代码:1.递归/***Definitionforabinarytreenode.*structTreeNode{*intval;*TreeNode*left;*TreeNode*right;*TreeNode():val(0),left(nu......