题意

  1. 你有一个英雄,攻击力为A,生命值为B。(没有经验、金币等机制,攻击力与生命值不可提高)
  2. 游戏中有n只怪,怪的攻击力为a[i],生命值为b[i]。
  3. 每次你可以选择一个怪攻击,攻击后你的生命值变为B-a[i],怪的生命值变为b[i]-A。
  4. 不论你是否死亡,如果你能消灭所有的怪,获得胜利。否则失败。

解题思路

  1. 遍历攻击所有的怪,模拟场景扣除英雄的血量。
  2. 若英雄的血量足以支撑让所有怪的血量都扣除到小于等于0,则获得胜利。否则失败。

注意

  1. 数据范围超过了有符号整型的最大值2^31,所以需要用long long。(因为没有用long long导致这道题WA了)
  2. 最后攻击攻击力最高的怪。因为极端情况最后一只怪只差一刀的情况下,主角只需要1血就可获得胜利,超过1的血量都是溢出的。这种情况下,最后攻击攻击力最高的怪,可以尽量减少血量溢出,最大可能完成任务。(我最开始想的是按照攻击力从小到大遍历,一样可以AC这道题,但是却让时间复杂度从O(n)变成了O(nlogn))

C++ Code (优化后)

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;int t;
ll A, B, n;
ll a[100010];
ll b;int main() {ios::sync_with_stdio(false);cin >> t;while (t--) {cin >> A >> B >> n;ll mxA = 0; // 攻击力最高的怪的攻击力。 for (int i = 0; i < n; ++i) cin >> a[i], mxA = max(mxA, a[i]);for (int i = 0; i < n; ++i) {cin >> b;B -= (b+A-1)/A*a[i];}// 回退一刀,看最后一刀前英雄的血量是否大于0 B+mxA > 0?puts("YES"):puts("NO");}return 0;
}

C++ Code (优化前)

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;int t;
ll A, B, n;struct node {ll a;ll b;
} arr[100010];bool cmp(node x, node y) {return x.a < y.a;
}int main() {ios::sync_with_stdio(false);cin >> t;while (t--) {cin >> A >> B >> n;for (int i = 0; i < n; ++i) {cin >> arr[i].a;}for (int i = 0; i < n; ++i) {cin >> arr[i].b;}// 将怪按攻击力排序 sort(arr, arr + n, cmp);// 不攻击最后一只怪 int cost = 0;// 默认可以胜利,通过血量改变标志位 bool flag = true;for (int i = 0; i < n - 1; ++i) {ll num = arr[i].b / A;arr[i].b -= num * A;if (arr[i].b > 0) {num++;arr[i].b -= A;}B -= num * arr[i].a;// 如果血量归零,则失败 if (B <= 0){flag = false;break; }}// 特判最后一只怪  int i = n - 1;ll num = arr[i].b / A;arr[i].b -= num * A;if (arr[i].b > 0) {num++;arr[i].b -= A;}B -= num * arr[i].a;// 回退一刀,若最后一刀前血量归零,则失败 if (B <= -arr[i].a)flag = false;if (flag)puts("YES");elseputs("NO");}return 0;
}

Codeforces 1480B. The Great Hero(阅读模拟题,注意数据范围和攻击顺序)相关推荐

  1. 计算机如何改变沟通方式,雅思阅读模拟题:计算机改变沟通方式

    下面新东方网雅思频道与大家分享一篇雅思阅读模拟题,这篇雅思阅读模拟试题的主要内容是简单介绍了计算机在改变人类的沟通方式方面的作用,还有这种改变的主要内容是什么,人们的沟通方式是如何改变的,有什么样的过 ...

  2. 2020辽宁国家公务员考试行测题库:行测片段阅读模拟题8.14

    行测题库:行测片段阅读模拟题 1.长期以来,食品安全问题之所以屡打屡犯,层出不穷,以至于民众人心惶惶,甚至惊呼 "找不到可以放心吃的东西",重要原因之一,在于法律发力不够,惩处力度 ...

  3. Codeforces Beta Round #5 B. Center Alignment 模拟题

    B. Center Alignment 题目连接: http://www.codeforces.com/contest/5/problem/B Description Almost every tex ...

  4. 计算机一级接收并阅读邮件,计算机一级考试ie题和收发邮件模拟题-(11160)

    计算机一级考试ie题和收发邮件模拟题-(11160) (3页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 4.9 积分 某模拟网站的主页地址是: HTTP ...

  5. 2020年江苏中考数学能用计算机吗,2020年【中考数学】真题及模拟:规律探索与阅读理解题(教师版)(江苏专用).pdf...

    『中考真题·分项详解』 『真金试炼·备战中考』 中考真题·模拟引申 编在前面: 历年的中考卷可以让学生认识到中考的题型,命题风格,各知识板块的分 值分布,考查的重点及难点.这对于初三学生备战中考具有很 ...

  6. Gym 100646 Problem C: LCR 模拟题

    Problem C: LCR 题目连接: http://codeforces.com/gym/100646/attachments Description LCR is a simple game f ...

  7. 不属于计算机完成科学特点的是,2020年9月网络教育统考计算机应用基础模拟题试卷4...

    2020年9月网络教育统考计算机应用基础模拟题试卷4 一.单选题 1.______是第四代计算机的典型代表. A.微型机 B.超小型机 C.巨型机 D.大中型机 答案:A 2.个人计算机又称PC机,这 ...

  8. Codeforces Round #701 (Div. 2)赛后补题报告(A~D)

    Codeforces Round #701 (Div. 2)赛后补题报告(A~D) A. Add and Divide 原题信息 http://codeforces.com/contest/1485/ ...

  9. 厦门大学2016年c语言程序设计,厦门大学c语言程序设计2016模拟题讲评及课程复习.pptx...

    <C语言程序设计>课程复习及模拟题讲评;<C语言程序设计>试卷各类题目分数分布情况 一.选择题 40分(20小题, 每题2分 ) 主要考核基本概念, 词法, 语法和小程序阅读等 ...

最新文章

  1. 使用android SDk帮助文档(英文) 下载中文SDK帮助文档(中文)
  2. 浅析网站建设之初应该从哪些方面进行考虑?
  3. 神奇的 SQL 之擦肩而过 → 真的用到索引了吗
  4. 子网掩码、最大主机、最大子网数的计算
  5. word修改一处另一处自动修改_这么做让word自动记录修改明细,再也不用一个字一个字的核对了...
  6. 低级鼠标钩子WH MOUSE LL
  7. 阿里字体图标库的使用
  8. 利用leafcutter做可变剪切(新手向)
  9. 51nod 1359 循环探求
  10. 借助JavaCV实现android手机查看PC摄像头实时视频
  11. 小米台灯突然自己亮了_除了彩屏和小爱,还有哪些升级?——小米手环4 NFC版...
  12. Java开源 ERP与客户管理-Sequoia ERP
  13. 拖延症患者的自我反省
  14. 超超超详细-实现一个简单的基于 React Fiber 的 React
  15. 搞不定Serverless?让你秒懂掌握Profiling让一份程序优雅自适应
  16. 贝加莱梯形图介绍与使用
  17. 华为三层交换机配置不同网段互通
  18. 散列函数的应用及其安全性 付淅 2016012063
  19. redhat6.5安装10201解决办法
  20. 2022年湖南省公共营养师(基础知识)练习题及答案

热门文章

  1. linux安装指定mysql版本安装,linux yum安装指定版本mysql
  2. 箭头函数特殊性与普通函数的区别
  3. php还原json,PHP语言中使用JSON和将json还原成数组
  4. Java黑皮书课后题第5章:*5.16(找出一个整数的因子)编写程序,读入一个整数,然后以升序显示它的所有最小因子。例如,若输入的整数是120,那么输出就应该是:2、2、2、3、5
  5. Java黑皮书课后题第2章:*2.23(驾驶费用)编写一个程序,提示用户输入驾驶的距离、每加仑多少英里的汽车燃油性能值,以及每加仑的价格,然后显示旅程的费用
  6. openwrt如何单独编译uboot
  7. [BZOJ 2734] 集合选数
  8. HDU1172猜数字 [模拟]
  9. window安装mysql5.7解压版(解决乱码问题)
  10. Linux下I/O多路转接之select --fd_set