欢乐赛#54 T3 题解 100% AC
2025-08-25 16:27:13
发布于:江苏
25阅读
0回复
0点赞
数学公式解析
-
有效暴击率计算:
- : 基础暴击率
- : 改装件暴击率增幅
- 结果上限为100%
-
暴击率溢出转换:
- 溢出部分按1:3比例转为暴伤加成
-
最终暴伤加成:
- : 基础暴伤加成
- : 改装件暴伤增幅
- : 溢出转换的暴伤加成
-
伤害计算公式:
- 基础伤害10000
- 暴击收益:暴击率×暴伤加成
示例验证
-
输入1:
1 80 150
+40 277
-
输入2:
1 65 5
+87 183
复杂度分析
- 时间复杂度:
- 空间复杂度:
- 算法特点:线性扫描所有改装件,实时计算并比较伤害值
代码部分
#include <bits/stdc++.h>
using namespace std;
int main() {
// 输入参数:n-改装件数量,x-基础暴击率(%),y-基础暴伤加成(%)
int n, x, y;
cin >> n >> x >> y;
// 初始化最大伤害值
double maxx = 0.0;
// 遍历所有改装件
while (n--) {
int a, b; // 当前改装件的暴击率增幅(%)和暴伤增幅(%)
cin >> a >> b;
// 计算有效暴击率(不超过100%)
double cr = min(x + a, 100);
// 计算暴击率溢出部分
double of = max(x + a - 100, 0);
// 计算实际暴伤加成(基础+改装+溢出转换)
double cd = y + b + 3 * of;
// 完整伤害公式计算
double da = 10000 * (1 + (cr/100) * (cd/100));
// 更新最大伤害值
if (da > maxx) maxx = da;
}
// 四舍五入输出整数结果
cout << (int)(maxx + 0.5);
return 0;
}
全部评论 1
af ds da f sad ds
1周前 来自 黑龙江
0
有帮助,赞一个