当前位置: 首页 > news >正文

B3628 机器猫斗恶龙

题目描述

机器猫出门斗恶龙了!他需要通过 𝑛 个关卡。

每个关卡要么是与怪物战斗,扣除一定的血量;要么是营地,给机器猫增加一定的血量。

在旅途中,机器猫任意时刻的血量不能低于或等于 0。问机器猫至少需要多少的初始血量,才能完成任务。

血量为正整数。

输入格式

第一行,一个正整数 𝑛n,表示关卡数量。

第二行,共 𝑛n 个整数 𝑎𝑖ai​,表示每个关卡。

  • 若 𝑎𝑖>0,则表示这个关卡是营地,增加 𝑎𝑖​ 的血量
  • 若 𝑎𝑖<0,则表示这个关卡是战斗,机器猫血量代价为 𝑎𝑖

输出格式

仅一行,一个正整数,表示机器猫需要的初始血量。

#include <bits/stdc++.h>
using namespace std;int n, a[100005];void input() {cin >> n;for(int i = 1; i <= n; i++)cin >> a[i]; // a[i] 是血的变化量
}bool check(int x) { // 计算 x 点血是否可以活下来int hp = x;for(int i = 1; i <= n; i++){hp += a[i]; // hp增加或者减少if(hp <= 0) return false; // 如果活不下来返回 false}return true; // 如果可以活下来,返回 true
}
void work() {int l = 1, r = 1000 * 100000, mid;int ans = r;while(l <= r) {mid = (l + r) / 2;if(check(mid)) {  // 检查mid血,发现可以活下来ans = mid; // 记录下答案r = mid - 1; // 继续找左区间} else           // 如果发现活不下来l = mid + 1; // 继续找右区间}cout << ans << endl;
}int main() {input();work();return 0;
}


http://www.mrgr.cn/news/64295.html

相关文章:

  • STM32 从0开始系统学习5
  • Linux版更新流程
  • Spring JPA 集成 YashanDB:让数据管理变得轻松愉快
  • NLP领域的经典算法和模型
  • 为什么TCP(TIME_WAIT)2倍MSL
  • ElementUI中el-table双击单元格显示输入框
  • C++队列
  • Linux系列-进程的概念
  • 02LangChain 实战课——安装入门
  • 支付宝批量转账工具--企业资金快速流转的安心之选
  • pytorch使用pyinstaller编译报错:找不到源代码
  • 轻松理解操作系统 - Linux 文件系统的心脏是什么?
  • 分享一下面试中常用的10 个面试点全解析,面试成功的秘诀
  • go语言回调函数的使用
  • 抓包sslpinning绕过
  • 代码随想录第十八天
  • C语言之写一个修改数组内容的函数
  • 优化外贸管理 解锁全球业务流畅双效
  • 原子操作(atomic operation)
  • Kotlin协程suspend的理解
  • 【JavaEE初阶】网络原理(4)
  • Linux云计算 |【第五阶段】CLOUD-DAY10
  • 国产操作系统卖疯了!最营收7.84亿,最低1.5亿
  • 每日OJ题_牛客_排序子序列_模拟_C++_Java
  • 2022美亚杯复现(部分)
  • 【系统架构设计师】2024年上半年真题论文: 论模型驱动架构设计方法及其应用(包括解题思路和素材)