酷代码 AI
菜单
服务商

解决学校鸽子集合位置优化问题的C++代码实现

```cpp #include <iostream> #include <vector> #include <algorithm> using namespace std; // 定义结构体表示鸽子队伍 struct Team { int num; // 鸽子数量 int pos; // 队伍位置 }; // 找到使总距离最小的集合位置 int findOptimalPosition(vector<Team>& teams) { vector<int> pigeonPositions; for (const auto& team : teams) { for (int i = 0; i < team.num; ++i) { pigeonPositions.push_back(team.pos); } } sort(pigeonPositions.begin(), pigeonPositions.end()); int n = pigeonPositions.size(); if (n % 2 == 0) { return pigeonPositions[n / 2 - 1]; } return pigeonPositions[n / 2]; } int main() { int n, m; cin >> n >> m; vector<Team> teams(n); for (int i = 0; i < n; ++i) { cin >> teams[i].num; } for (int i = 0; i < n; ++i) { cin >> teams[i].pos; } // 输出初始时的最优集合位置 cout << findOptimalPosition(teams) << endl; for (int i = 0; i < m; ++i) { char op; cin >> op; if (op == 'A') { int l, r, c; cin >> l >> r >> c; for (int j = l - 1; j < r; ++j) { teams[j].num += c; } } else if (op == 'B') { int x, y; cin >> x >> y; Team temp = teams[x - 1]; if (x < y) { for (int j = x - 1; j < y - 1; ++j) { teams[j] = teams[j + 1]; } } else { for (int j = x - 1; j > y - 1; --j) { teams[j] = teams[j - 1]; } } teams[y - 1] = temp; } // 输出操作后的最优集合位置 cout << findOptimalPosition(teams) << endl; } return 0; } ``` ######[AI问答 | 609点数解答 | 2026-03-28 12:56:47]

相关提问
本站限时免费提问中
实用工具查看更多
Linux在线手册 [开发类]
Jquery在线手册 [开发类]
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]