D. For Gamers. By Gamers.

现有 n 种兵种,每种有单位招募代价、攻击力、生命值三个数值。需回答 m 次询问——每次询问给出魔王的攻击、生命,问在以下条件下,击败魔王至少需要花费多少代价?

  • 只能选择一种兵种的士兵招募
  • 任意士兵不能在战斗中死亡
  • 魔王与士兵并非回合制战斗,造成伤害是连续的。

分析:因为士兵不能死亡,所以招募 k 个士兵单纯等于将其攻击力变为 k 倍。

所以浅薄观点是t*hi>De而且k*di>t*He //t是轮数,k是兵数

也就是k*hi*di>t*De*He,所以在输入时可以有一个总价值val=hi*di。

记maxval[cost]是在cost的花费下最大的价值

#include<bits/stdc++.h>
using namespace std;
long long a, ans;
long long n,b,x,y;
long long maxval[1000010];
int c, cost;
string s;int main()
{cin >> n >> c;for (int i = 1; i <= n; i++){cin >> cost >> x >> y;maxval[cost] = max(x * y, maxval[cost]);//在cost的花费下最大的价值}//注意只能单兵种,所以只能倍增for (int i = 1; i <= c; i++){for (int j = 2; j * i <= c; j++){maxval[i * j] = max(maxval[i * j], maxval[i] * j);}}for (int i = 1; i <= c; i++){maxval[i] = max(maxval[i], maxval[i - 1]);}int m;cin >> m;long long nedx, nedy;long long nedval;for (int i = 1; i <= m; i++) {cin >> nedx >> nedy;nedval = nedx * nedy;if (nedval >= maxval[c])cout << "-1 " ;//注意等于也要输出-1,是同归于尽else{long long ans = upper_bound(maxval + 1, maxval + 1 + c, nedval) - maxval;cout << ans << ' ' ;}}return 0;
}

——————————————————————————————————————————

备注upper_bound用法:

查找[first, last)区域中第一个大于 val 的元素。
upper_bound (数列头地址值, 数列尾地址+1, 要找数val);

lowerbound()查找的是容器中第一个小于等于目标值的元素的位置,

而upper_bound()查找的是容器中第一个小于目标值的元素的位置就。如果容器中的元素都比目标值大则返回最后一个元素的下一个位置。

【CF补题】【D】Educational Codeforces Round 125 (Rated for Div. 2) C++代码相关推荐

  1. 【CF比赛】Educational Codeforces Round 102 (Rated for Div. 2)

    题目来源 Educational Codeforces Round 102 (Rated for Div. 2) A. Replacing Elements 只要判断最大值是否小于等于d,或者第一个值 ...

  2. Educational Codeforces Round 103 (Rated for Div. 2)前四题

    Educational Codeforces Round 103 (Rated for Div. 2) 第二次被别人hack,悲 A - K-divisible Sum 题意 给定两个整数 n,kn, ...

  3. Educational Codeforces Round 73 (Rated for Div. 2) E. Game With String 思维博弈 好题(2500)

    传送门 文章目录 题意: 思路: 题意: 思路: 我们将每一段...拿出来看成若干段,将其分成以下四种情况: (1)len<b(1)len<b(1)len<b (2)b≤len< ...

  4. Educational Codeforces Round 112 (Rated for Div. 2)

    Educational Codeforces Round 112 (Rated for Div. 2) 题号 题目 知识点 A PizzaForces B Two Tables C Coin Rows ...

  5. Educational Codeforces Round 61 (Rated for Div. 2)(A、B、C、D、E、F)

    欢迎访问本菜鸡的独立博客:Codecho 比赛名称 Educational Codeforces Round 61 (Rated for Div. 2) 比赛链接 https://codeforces ...

  6. Educational Codeforces Round 126 (Rated for Div. 2)(A-E)

    A-Array Balancing 题意:给定两个数组a,b,a数组第i个数可以和b数组的第i个数交换,最终求 a1−a2|+|a2−a3|+⋯+|an−1−an||a1−a2|+|a2−a3|+⋯+ ...

  7. Educational Codeforces Round 117 (Rated for Div. 2)题解(A~D)

    Educational Codeforces Round 117 (Rated for Div. 2) 今天这场没打,赛后从九点半到十一点把前面四个题目给补了一下,E题明天有时间看看能不能弄出来. A ...

  8. Educational Codeforces Round 138 (Rated for Div. 2)-赛后总结

    Dashboard - Educational Codeforces Round 138 (Rated for Div. 2) - Codeforces 总结一个教训就是不要心急,特别是对于一些题目, ...

  9. Educational Codeforces Round 122 (Rated for Div. 2) A B C D

    Educational Codeforces Round 122 (Rated for Div. 2) A B C D A Div. 7 思路: 能被777整除,方法有很多种,因为要求最小次数,那么我 ...

最新文章

  1. 浅谈.NET(C#)与Windows用户账户信息的获取
  2. WINCE设备开机灰屏问题(很怪异)
  3. 发生了变化 触发器函数不能读它_2013年1月18日调试触发器“表发生了变化,触发器或函数不能读它”的出现原因,以及解决方案...
  4. Java 在 CMD 环境下编译
  5. 【数据结构与算法】之深入解析“寻找旋转排序数组中的最小值II”的求解思路与算法示例
  6. leetCode 28. Implement strStr() 字符串
  7. java中的 ok_java okhttp包的类特点
  8. 大数据之-Hadoop之HDFS的API操作_定位读取文件_只读取某个block的内容_案例---大数据之hadoop工作笔记0065
  9. 英特尔放出Linux微代码以修复Meltdown和Spectre漏洞
  10. 关于JM8.6中MAX_LIST_SIZE值的选取
  11. 数据库连接软件SQLyog 13.1.7 免费下载安装
  12. MySQL数据库安装教程
  13. 数据恢复原来是可以免费的!
  14. NOD32杀毒软件升级ID
  15. InnoSetup 使用
  16. 调用国家气象局天气接口
  17. Mybatisplus语句变成下划线_解决方法
  18. C++ Primer Plus(嵌入式公开课)---第5,6章 循环和关系表达式 分支语句和逻辑运算符
  19. 中南大学计算机学院教师名录,教师列表-中南大学商学院
  20. [yocto]基于poky项目创建自己的层并且在层中增加自己的配方文件

热门文章

  1. 复旦计算机学院党关系转接,关于2020级研究生党团员组织关系转接工作的通知...
  2. 传今日头条启动新一轮30亿美元融资,估值或达750亿美元,超过滴滴
  3. python实战演练(六)员工信息查询系统
  4. 荣耀magic5参数 荣耀magic5评测 怎么样
  5. 计算机考证可以直接考3级
  6. C51 函数cos()与acos()使用注意点
  7. R7000无web界面openwrt版安装GUI
  8. python发起ddos攻击_公司技术总监又教我个新技能, 用Python实现DDOS攻击! 分享给大家...
  9. 重庆自考本科一般多久能拿证?
  10. 【2022-SPSSPRO杯数学建模】C题污水流行病学原理在新冠疫情防控方面的作用 论文及代码