原题链接:https://codeforces.com/contest/1141/problem/E

题意:超人与怪兽要进行多个个回合的战斗,每一个回合又细分为n分钟,在这一回合中每经过一分钟,怪兽会获得血量的加成或减少,问经过多少分钟后,怪兽第一时间倒地?若不会,输出-1.

解题思路:我们这样想,先遍历一次回合,判断怪兽能否在该回合中倒地,并统计该回合的总收益,若总收益小于等于0,则怪兽永远不可能倒地。之后,再利用取余求出在最后一个回合中h的血量,再遍历该回合,得到倒地的时间。则此题可解。

AC代码:

/*
*邮箱:2825841950@qq.com
*blog:https://blog.csdn.net/hzf0701
*注:代码如有问题请私信我或在评论区留言,谢谢支持。
*/
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<cmath>
#include<string>
#include<stack>
#include<queue>
#include<cstring>
#include<map>
#include<iterator>
#include<list>
#include<set>
#include<functional>
#include<memory.h>//低版本G++编译器不支持,若使用这种G++编译器此段应注释掉
#include<iomanip>
#include<vector>
#include<cstring>
#define scd(n) scanf("%d",&n)
#define scf(n) scanf("%f",&n)
#define scc(n) scanf("%c",&n)
#define scs(n) scanf("%s",n)
#define prd(n) printf("%d",n)
#define prf(n) printf("%f",n)
#define prc(n) printf("%c",n)
#define prs(n) printf("%s",n)
#define rep(i,a,n) for (int i=a;i<=n;i++)//i为循环变量,a为初始值,n为界限值,递增
#define per(i,a,n) for (int i=a;i>=n;i--)//i为循环变量, a为初始值,n为界限值,递减。
#define pb push_back
#define fi first
#define se second
#define mp make_pair
using namespace std;
typedef long long ll;
typedef long double ld;
typedef pair<ll, ll>  pll;
typedef pair<int, int> pii;
const ll inf = 0x3f3f3f3f;//无穷大
const ll maxn =2e5+2;//最大值。
//*******************************分割线,以上为代码自定义代码模板***************************************//ll nums[maxn];
ll h;//monster的生命
ll n;//一回合的n分钟。
ll sum;//统计一回合进行的成果。
ll temp;//临时变量。
ll result;
int main(){//freopen("in.txt", "r", stdin);//提交的时候要注释掉ios::sync_with_stdio(false);//打消iostream中输入输出缓存,节省时间。cin.tie(0); cout.tie(0);//可以通过tie(0)(0表示NULL)来解除cin与cout的绑定,进一步加快执行效率。cin>>h>>n;sum=0;temp=0;bool flag=0;rep(i,0,n-1){cin>>nums[i];sum-=nums[i];h+=nums[i];if(flag==0){if(h<=0){result=i+1;flag=1;}}temp=max(temp,sum);//找到其中消耗最多的血量,便于之后不越界。}if(flag){cout<<result<<endl;return 0;}if(sum<=0){cout<<"-1"<<endl;return 0;}temp=(h-temp)/sum;//经过temp个回合,这里减去temp是为了多进行了战斗。h-=temp*sum;  //减去temp个回合所消耗的量。result=temp*n+n;//前面也进行了一次遍历,算一个回合,需要加上前面的一个回合。for(int i=0;;i++){h+=nums[i%n];result++;if(h<=0){cout<<result<<endl;break;}}return 0;
}

1141E - Superhero Battle(数学思维) Codeforces Round #547 (Div. 3)相关推荐

  1. Codeforces Round #547 (Div. 3)

    E. Superhero Battle 题意 有一个血量,N次循环攻击,每次可以加血见血.问第几次可以把血量减到0 思路 如果存在解,必定是N次攻击中的一次终结,所以可以枚举终结点的情况,取一个最小值 ...

  2. CF 1141E. Superhero Battle(思维)

    [题面] [题解] 题意:这是一个打怪兽的故事~给定怪兽初始体力值H和一个轮回的长度n,然后给定一个轮回中每一局怪兽体力的变动序列.输出第几局怪兽被打败即体力不大于0,若怪兽必胜则输出-1. 思路:难 ...

  3. Codeforces Round #547 (Div. 3) D

    http://codeforces.com/contest/1141/problem/D 题目大意: 鞋子匹配,用一个小写字母表示一种颜色.L[i]表示左脚的颜色,R[i]表示右脚的颜色,只有当L[i ...

  4. B. Multiply by 2, divide by 6(数学) Codeforces Round #653 (Div. 3)

    原题链接:https://codeforces.com/problemset/problem/1374/B 题意:有一个数能进行两种操作,除以6乘以2,问经过多少次操作能变成1.若不行则输出-1. 解 ...

  5. 【Codeforces Round #547 (Div. 3)】 A B C D E F1 F2 G

    A 题意 问你从一个n 到 m 经过多少次数 *2 *3能到m 所以特判一下m能否整除n  然后除了以后根据奇偶去判断求次数 #include <cstdio> #include < ...

  6. 【模拟+数学】Codeforces Round #621 (Div. 1 + Div. 2) 1307E Cow and Treats

    Cow and Treats [cf链接] After a successful year of milk production, Farmer John is rewarding his cows ...

  7. Codeforces Round #586 (Div. 1 + Div. 2) D. Alex and Julian 数学 + 思维

    传送门 文章目录 题意: 思路: 题意: 给你一个无限个点的坐标轴,一个集合BBB,如果存在∣i−j∣=bk|i-j|=b_k∣i−j∣=bk​的话,那么i,ji,ji,j之间就连边.现在问你至少要从 ...

  8. Codeforces Round #459 (Div. 2) C 思维,贪心 D 记忆化dp

    Codeforces Round #459 (Div. 2) C. The Monster 题意:定义正确的括号串,是能够全部匹配的左右括号串. 给出一个字符串,有 (.). ? 三种字符, ? 可以 ...

  9. Codeforces Round #774 (Div. 2) Power Board(数学)

    Codeforces Round #774 (Div. 2) Power Board(数学) 链接 题意:给一个n*m的矩阵,每个元素的值是 i j i^j ij,问有多少个不一样的元素 思路:不过这 ...

最新文章

  1. gcc: error: CreateProcess: No such file or directory解决方案
  2. 解决socket粘包的两种low版模式 os.popen()和struct模块
  3. ServletContextListener接口用法
  4. android call require api level
  5. 使用PHP-GTK编写一个windows桌面应用程序
  6. 你知道长颈鹿是怎么睡觉的吗? | 今日趣图
  7. java导出pdf 含图片_java 生成PDF含图片和中文件实现代码
  8. scrapy之内蒙古自治区环境保护厅
  9. 高效的序列化/反序列化数据方式 Protobuf
  10. html5-css的使用强制优先级
  11. 软件测试基础课程学习笔记1--软件测试简介
  12. 电话号码正则表达式 (包含电话号码 和 手机号码)
  13. CSS text-decoration 属性
  14. css各种居中解决方法
  15. 利用Karma、Jasmine 做前端单元测试
  16. 计算机组成原理白中英ppt,计算机组成原理(本全)白中英.ppt
  17. react routers路由地址 F5刷新白屏
  18. twitter要我绑定手机_Twitter我的糖尿病
  19. Android 权限表,危险权限
  20. 为什么双绞线可以屏蔽外部磁场干扰?

热门文章

  1. Windows7建立共享WiFi设置(局域网配置)
  2. 以色列量子计算软件公司,与欧洲机构合作开发薛定谔猫状态纠错技术
  3. 计算机科学与技术专业实践范文,计算机科学与技术专业毕业实习报告范文.docx...
  4. 长江水质的评价和预测——主要污染地区
  5. linux下载安装的命令,linux安装和常用命令
  6. sql char和varchar的区别
  7. java图书馆自习室找座占座位系统
  8. android ftp权限,实战android手机telnet、ftp登陆,权限修改
  9. 手机邮箱看不到已发送邮件_iPhone用户请注意:你的邮件App得禁用,刚曝光的安全漏洞,iOS 6以上设备全中招...
  10. y5_运五飞机最新改进型号——Y5BG