1 条题解
-
0
题意分析
- 问题转化:选择根绳索时,最大承重
- 关键性质:最优解必定选择撕裂重量最大的根绳索
- 数学表达:,其中为排序后第大的撕裂重量
解题思路
- 排序处理:将绳索按撕裂重量降序排列
- 极值计算:
- 对排序后的数组,计算所有对应的
- 取所有的最大值
- 边界情况:所有绳索单独使用时的最大值需参与比较
实现步骤
- 输入处理:读取测试数据,存储撕裂重量数组
- 排序操作:对每个测试用例的数组进行降序排序
- 遍历计算:
- 初始化
- 对从到,计算
- 更新
- 输出结果:返回
代码实现
#include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { int t; cin >> t; while (t--) { int n; cin >> n; vector<int> ropes(n); for (int i = 0; i < n; ++i) { cin >> ropes[i]; } sort(ropes.begin(), ropes.end()); int max_weight = 0; for (int i = 0; i < n; ++i) { int current = ropes[i] * (n - i); if (current > max_weight) { max_weight = current; } } cout << max_weight << endl; } return 0; }
- 1
信息
- ID
- 1293
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 4
- 已通过
- 1
- 上传者