每日一练
技能升级题目详细小蓝最近正在玩一款 RPG游戏。
他的角色一共有 N个可以加攻击力的技能。
其中第 i个技能首次升级可以提升 Ai点攻击力,以后每次升级增加的点数都会减少 Bi。
⌈Ai/Bi⌉(上取整)次之后,再升级该技能将不会改变攻击力。
现在小蓝可以总计升级 M次技能,他可以任意选择升级的技能和次数。
请你计算小蓝最多可以提高多少点攻击力?
输入格式输入第一行包含两个整数 N和 M。
以下 N行每行包含两个整数 Ai和 Bi。
输出格式输出一行包含一个整数表示答案。
数据范围对于 40%的评测用例,1≤N,M≤1000;对于 60%的评测用例,1≤N≤104,1≤M≤107;对于所有评测用例,1≤N≤105,1≤M≤2×109,1≤Ai,Bi≤106。
输入样例:12343 610 59 28 1
输出样例:147
题解思路这道题采用二分和多路归并的思想。二分体现在加多少攻击力上,它的范围是0~1e6,不断缩小范围就行。如何缩小,需要推导公式,首先我们想象加攻击力是n个数组(将数组中的数看作等差数列,每个数列其实存的是一种攻击力,但是每种攻击力会等差缩小),每个数组都是从大到小排 ...
c++
知识点
C++ R 原始字符串 R 表示方法,R是原始字符串原始字符串的开始符号 :R”( , 原始字符串的结束符号:)”。R” 与 ( 之间可以插入其它任意字符串。
不做任何转义 例如下列代码
12345678910std::string str1 = "aaaaaa.\nbbbb.\ncccc.\n";cout << str1 <<endl;cout << "---------------------" <<endl;std::string raw_str = R"(aaaaaa\nbbbb\ncccc\n)";cout << raw_str <<endl;
输出结果为
12345aaaaaabbbbccccaaaaaa\nbbbb\ncccc\n
可以输入多行文本
123456789const std::string json_text = R"( { "name": &q ...
习题
[NOIP2005 普及组] 校门外的树题目描述某校大门外长度为 $l$ 的马路上有一排树,每两棵相邻的树之间的间隔都是 $1$ 米。我们可以把马路看成一个数轴,马路的一端在数轴 $0$ 的位置,另一端在 $l$ 的位置;数轴上的每个整数点,即 $0,1,2,\dots,l$,都种有一棵树。
由于马路上有一些区域要用来建地铁。这些区域用它们在数轴上的起始点和终止点表示。已知任一区域的起始点和终止点的坐标都是整数,区域之间可能有重合的部分。现在要把这些区域中的树(包括区域端点处的两棵树)移走。你的任务是计算将这些树都移走后,马路上还有多少棵树。
输入格式第一行有两个整数,分别表示马路的长度 $l$ 和区域的数目 $m$。
接下来 $m$ 行,每行两个整数 $u, v$,表示一个区域的起始点和终止点的坐标。
输出格式输出一行一个整数,表示将这些树都移走后,马路上剩余的树木数量。
样例 #1样例输入 #11234500 3150 300100 200470 471
样例输出 #11298
提示【数据范围】
对于 $20\%$ 的数据,保证区域之间没有重合的部分。
对于 $100\%$ 的数 ...