1 条题解
-
0
题意简述
块地,每块有 株蒲公英。
初始割草机关闭。
访问每块地时:- 若 为奇数,先切换割草机状态。
- 若割草机开启,则收割 株。
求最优顺序下的最大收割总数。
结论
设奇数地个数为 ,将奇数地从小到大排序为 。
最大收益为: [ \text{ans} = \left( \sum_{i=1}^n a_i \right) - \sum_{i=1}^{\lfloor k/2 \rfloor} o_i ]
解释
- 所有偶数地最终都能被收割。
- 奇数地中,排序后位置为偶数(第 )的被收割,位置为奇数的被“浪费”。
- 浪费的奇数地正好是最小的 个。
- 所以从总和里减去这些最小的奇数地即可。
示例验证
例 2:,奇数地 ,,,总和 ✅
例 3:,奇数地 ,排序后 ,,去掉最小的一个 ,总和 ✅
代码
#include <bits/stdc++.h> using namespace std; using ll = long long; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int t; cin >> t; while (t--) { int n; cin >> n; vector<ll> odd; ll sum = 0; for (int i = 0; i < n; ++i) { ll x; cin >> x; sum += x; if (x & 1) odd.push_back(x); } sort(odd.begin(), odd.end()); for (int i = 0; i < (int)odd.size() / 2; ++i) { sum -= odd[i]; } cout << sum << '\n'; } return 0; }
- 1
信息
- ID
- 7281
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 4
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者