1. Job Roadmap
  2. Home
  3. Problem Set
  4. codenotelist
  5. Forum
  6. course
  7. Shore Share Sessions
  8. Record
  1. Login
  2. Sign Up
  3. Language
    1. English
    2. 한국어
    3. 简体中文
    4. 正體中文
    ZhContent TextSol AI分析

DFS暴力解法

这个解法用 DFS 按顺序枚举每只怪兽“跳过”或“能打就打”两种选择,递归维护当前下标 i、当前能量 energy 和已击败数量 cnt,当处理完所有怪兽时更新最大答案;在枚举过程中加一个很弱的剪枝:如果当前怪兽能打,并且 reward[i] >= damage[i],说明打完后能量不会减少,同时击败数还能加一,所以这种情况下“打”一定不比“跳过”差,可以直接打而不枚举跳过分支。

DFS解法

#code-switcher

def max_defeat(E, damage, reward):
    n = len(damage)
    ans = 0

P4825.第3题-星球大战

    1000ms Tried: 801 Accepted: 95 Difficulty: 7 所属公司 : 华为
    算法与标签>动态规划

题目内容

在潘多拉星球上,有一群怪兽组成一道阵线,奥特曼必须按顺序与这些怪兽战斗。奥特曼有一个初始能量值 EEE,每个怪兽都有一个攻击力 damagedamagedamage 和击败奖励 rewardrewardreward(击败后奥特曼可以恢复相应的能量值)。

当奥特曼面对第 iii 个怪兽时,有以下选择:

  1. 如果当前能量值大于怪兽攻击力 damage[i]damage[i]damage[i],奥特曼可以选择战斗,此时会先消耗掉 damage[i]damage[i]damage[i] 点能量,然后增加 reward[i]reward[i]reward[i] 点能量;

  2. 如果当前能量值小于或等于怪兽攻击力 damage[i]damage[i]damage[i],奥特曼不能与该怪兽战斗(因为奥特曼剩余能量不能 ≤0≤ 0≤0),此时只能跳过该怪兽;

  3. 无论能否打过,都选择跳过该怪兽,此时奥特曼不消耗也不增加能量;

奥特曼的目标是尽可能多的击败怪兽(即最大化击败数量),现在需要计算奥特曼最多能击败多少个怪兽。

注意:

  1. 奥特曼与怪兽战斗的顺序不能改变。

约束条件:

  • 1≤len(damage)=len(reward)≤1001 \le \text{len(damage)} = \text{len(reward)} \le 1001≤len(damage)=len(reward)≤100
  • 1≤E≤1091 \le E \le 10^91≤E≤109
  • 1≤damage[i],reward[i]≤1091 \le \text{damage}[i], \text{reward}[i] \le 10^91≤damage[i],reward[i]≤109

输入描述

  • EEE: 整数,奥特曼初始能量值。
  • damagedamagedamage: 整数数组,每个怪兽的攻击力值。
  • rewardrewardreward: 整数数组,击败每个怪兽后获得能量值奖励。

输出描述

整数,最多击败的怪兽数量。

样例1

输入

18
15 17 4 18
1 15 4 17

输出

2

说明

奥特曼初始能量为 181818,然后按顺序与怪兽战斗:

  • 跳过第 111 个怪兽;
  • 打第 222 个怪兽:奥特曼当前能量 181818,怪兽攻击力 171717,奖励 151515,奥特曼剩余能量:18−17+15=1618-17+15=1618−17+15=16;
  • 打第 333 个怪兽:怪兽攻击力 444,奖励 444,奥特曼剩余能量:16−4+4=1616-4+4=1616−4+4=16;
  • 奥特曼剩余能量小于 181818,所以跳过第 444 个怪兽; 最多打败 222 个怪兽,输出2。

样例2

输入

5
10 20 30
1 1 1

输出

0

说明

每个怪兽都打不过,输出 000 。

样例3

输入

9
5 4 5
0 3 4

输出

2

说明

奥特曼初始能量为 999,然后按顺序与怪兽战斗:

  • 跳过第 111 个怪兽;
  • 打第 222 个怪兽:奥特曼当前能量 999,怪兽攻击力 444,奖励 333,奥特曼剩余能量:9−4+3=89-4+3=89−4+3=8;
  • 打第 333 个怪兽:怪兽攻击力 555,奖励 444,奥特曼剩余能量:8−5+4=78-5+4=78−5+4=7;

最多打败 222 个怪兽,输出 222。

登录后即可使用 AI 分析。

模式
倒计时时长
:

最长 10 小时 59 分;应用后按此时长重新开始。

提示:点击提交记录在左侧题面区域查看详情
题库
AI分析设置
留空使用官方API Key,每天有次数限制(自定义API Key仅限会员和管理员使用,不限次数)
会员和管理员可切换模型;切到 Kimi/智谱/通义/豆包时需填写对应供应商 API Key
升级会员,可将运行与提交冷却时间缩短至 1 秒起

Status

  • Judging Queue
  • Service Status

Development

  • Open Source

Support

  • Help
  • Contact Us

About

  • About
  • Privacy
  • Terms of Service
  • Copyright Complaint
  1. Language
    1. English
    2. 한국어
    3. 简体中文
    4. 正體中文
  2. Legacy mode
  3. Theme
    1. Light
    2. Dark
  1. 京ICP备2025123107号-1
  2. Worker 1, 45ms
  3. Powered by Hydro v5.0.0-beta.18 Community
CLOSE


ScanQRCodePrompt

请使用微信扫描下方二维码完成注册

Forgot password or username?