【题目链接】

OpenJudge NOI 1.5 37:雇佣兵

【题目考点】

1. 模拟

2. < cmath >中的取整函数

  • 向上取整函数double ceil(double x),返回大于等于x的最小整数。
  • 向下取整函数double floor(double x),返回小于等于x的最大整数。
  • 注意:两函数返回的返回值都是double类型的

【解题思路】

  • 补血阶段:需要补M点血,每个能量元素最多补战斗力N点血,那么补血消耗能量元素个数为:⌈M/N⌉\lceil M / N \rceil⌈M/N⌉
  • 战斗阶段:设当前战斗力为n。在这个战斗周期共有M天,连续战斗n天,战斗力上升1点,这一战斗周期战斗力可以上升⌊M/n⌋\lfloor M / n \rfloor⌊M/n⌋点。
  • 循环进行补血阶段、战斗阶段,直到补血阶段将能量元素耗尽,无法补满血为止

【题解代码】

解法1:使用取整函数ceil, floor

#include <bits/stdc++.h>
using namespace std;
int main()
{int m, hp = 0, n, x;//hp: 体力值 cin>>m>>n>>x;while(true){x -= (int)ceil((double)m / n);//把体力值从0补到m,消耗能量元素if(x < 0)break; n += (int)floor((double)m / n);//这周期战斗力增加 }cout<<n;return 0;
}

解法2:用循环来模拟补血和战斗阶段

#include <bits/stdc++.h>
using namespace std;
int main()
{int m, hp = 0, n, x, nAdd;//hp: 体力值cin>>m>>n>>x;while(true){for(hp = 0; hp < m; hp += n)//补血到hp>=m时结束 x--;//每次用一个能量水晶,补n点血。n是当前战斗力 if(x < 0)break; nAdd = 0;//本轮能增加几点战斗力 for(int i = 1; i <= m; ++i)//m天战斗 {if(i % n == 0)//i是n整数倍的天数时,已经连续战斗n天,那么本轮战斗增加的点数加1nAdd++;}n += nAdd;//增加战斗点}cout<<n;return 0;
}

OpenJudge NOI 1.5 37:雇佣兵相关推荐

  1. 1.5.37:雇佣兵

    Noi.openjudge.cn 1.5.37:雇佣兵 雇佣兵的体力最大值为M,初始体力值为0.战斗力为N.拥有X个能量元素. 当雇佣兵的体力值恰好为M时,才可以参加一个为期M天的战斗期,战斗期结束体 ...

  2. openjudge 1.5.37 雇佣兵

    OpenJudge - 37:雇佣兵 #include<bits/stdc++.h> using namespace std; int main() {int m,n,x;cin>& ...

  3. 1.5编程基础之循环控制 37 雇佣兵

    http://noi.openjudge.cn/ch0105/37/ /* 1.5编程基础之循环控制 37 雇佣兵 http://noi.openjudge.cn/ch0105/37/ https:/ ...

  4. OpenJudge NOI 1.5编程基础之循环控制(31-40题)C++ 解题思路

    续上一篇文章.OpenJudge NOI 1.5 编程基础之循环控制(21-30题)C++ 解题思路_Leleprogrammer的博客-CSDN博客续上一篇文章OpenJudge NOI 1.5编程 ...

  5. 【OpenJudge NOI】题解目录

    [OpenJudge NOI]题解目录 OJ链接:OpenJudge NOI 以下为本人做的OJ题解 针对每一道题我都会给出题目考点.解题思路.题解代码.必要时也会给出不同的解题方法. 如有不足之处, ...

  6. OpenJudge NOI题库 1.5编程基础之循环控制

    OpenJudge NOI题库 1.5编程基础之循环控制 OpenJudge - OpenJudge - 题目 1.5_01求平均年龄 1.5_01求平均年龄_哔哩哔哩_bilibili 1.5_02 ...

  7. 信息学奥赛一本通 1399:甲流病人初筛 | OpenJudge NOI 1.12 03:甲流病人初筛

    [题目链接] ybt 1399:甲流病人初筛 OpenJudge NOI 1.12 03:甲流病人初筛 [题目考点] 1. 函数 2. 计数 [题解代码] 解法1:写函数判断一个人是不是初筛的甲流病人 ...

  8. 信息学奥赛一本通 1232:Crossing River | OpenJudge NOI 4.6 702:Crossing River

    [题目链接] ybt 1232:Crossing River OpenJudge NOI 4.6 702:Crossing River 一本通里的翻译不够完整,OpenJudge中的英文原题中有对数据 ...

  9. 信息学奥赛一本通 1229:电池的寿命 | OpenJudge NOI 4.6 2469:电池的寿命

    [题目链接] ybt 1229:电池的寿命 OpenJudge NOI 4.6 2469:电池的寿命 [题目考点] 1. 贪心 [解题思路] 1. 贪心选择性质的证明 电池分配主要有两步, 第一步:将 ...

最新文章

  1. Centos7下安装MongoDB
  2. 网易严选全链路市场投放的数据产品策略
  3. 施一公:世界如此未知,还有什么物事必须难以释怀?
  4. android插件化-apkplug框架基本结构-01
  5. mysql 2006测试_狂神说MySQL06:事务和索引
  6. activemq使用
  7. HDU - 3518 Boring counting(后缀数组)
  8. linux中vi基础知识,Vim入门基础知识集锦
  9. linux 下的前端编程工具,Prepros Linux版(前端开发工具)
  10. 微信公众号开发之微信买单
  11. python写彩票预测软件_python写彩票预测软件
  12. 为啥Hibernate的HQL查询要使用别名呢?
  13. 聊天室群聊以及私聊功能的实现
  14. 数通基础 -- 二层交换技术
  15. 阿里妈妈技术团队5篇论文入选 KDD 2022
  16. Error: [$injector:unpr]错误解释
  17. 软式棒垒球运动进校园
  18. Photozoom图像放大的技术一二事
  19. 可口可乐公司旗下产品已检出核辐射物质严重超标 写一份新闻稿
  20. 不懂语言代码,超级菜鸟的建站分享(一):建站流程

热门文章

  1. 动画原理——用户交互:移动物体
  2. 如何下载Lucene.net源码
  3. 数据看穿一生:前半生赚钱养娃,后半生赚钱买命
  4. 缓存穿透、击穿、雪崩什么的傻傻分不清楚?看了这篇文后,我明白了
  5. 惊呆了!不改一行 Java 代码竟然就能轻松解决敏感信息加解密
  6. 开源协议神图介绍 MIT 与 Apache 等
  7. JEECG v2.3 发布,基于代码生成器的智能开发框架
  8. 医学图像数据集和处理工具【总结】
  9. Flink SQL 功能解密系列 —— 流式 TopN 挑战与实现
  10. Oracle11默认用户名和密码