1 条题解
-
0
符号分配
题意
给定 个数,构造一个包含 个 '+' 和 个 '-'的表达式使得计算结果最大。
题解
贪心的考虑,要尽可能加上大的,减去小的,而第一个数的符号永远为 '+'。那么只需要对后 个数排序,减去前 小数的和,加上后 大数的和,最后加上第一个数即为最大值。
参考代码
#include <bits/stdc++.h> using namespace std; using i64 = long long; void Solve() { int n, a, b; cin >> n >> a >> b; vector<int> v(n - 1); i64 x; cin >> x; for (auto& xx : v) cin >> xx; sort(v.begin(), v.end()); for (int i = 0; i < b; i++) x -= v[i]; for (int i = b; i < n - 1; i++) x += v[i]; cout << x << "\n"; } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); Solve(); return 0; }
- 1
信息
- ID
- 286
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 6
- 标签
- (无)
- 递交数
- 62
- 已通过
- 20
- 上传者