您的位置:首页 > 财经 > 金融 > 网络营销运营策划_新冠2024中国又要封城了_天津网络推广seo_上海网站建设公司

网络营销运营策划_新冠2024中国又要封城了_天津网络推广seo_上海网站建设公司

2024/11/16 14:39:09 来源:https://blog.csdn.net/yymer214/article/details/143456213  浏览:    关键词:网络营销运营策划_新冠2024中国又要封城了_天津网络推广seo_上海网站建设公司
网络营销运营策划_新冠2024中国又要封城了_天津网络推广seo_上海网站建设公司

题目描述

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

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

在旅途中,机器猫任意时刻的血量不能低于或等于 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;
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com