使用C++模拟草原蛇决斗并计算最终存活蛇的条数
```cpp #include <iostream> #include <vector> #include <algorithm> using namespace std; struct Snake { int id; int power; Snake(int i, int p) : id(i), power(p) {} // 重载小于运算符,用于排序 bool operator<(const Snake& other) const { if (power != other.power) { return power < other.power; } return id < other.id; } }; // 模拟决斗过程 int simulateDuel(vector<Snake>& snakes) { while (snakes.size() > 1) { sort(snakes.begin(), snakes.end()); Snake strongest = snakes.back(); Snake weakest = snakes.front(); // 检查最强的蛇吃了最弱的蛇后是否会成为最弱的蛇 bool willBeWeakest = false; vector<Snake> temp = snakes; temp.pop_back(); temp.erase(temp.begin()); temp.emplace_back(strongest.id, strongest.power - weakest.power); sort(temp.begin(), temp.end()); if (temp.front().id == strongest.id && temp.front().power == strongest.power - weakest.power) { willBeWeakest = true; } if (willBeWeakest) { break; } // 最强的蛇选择吃最弱的蛇 snakes.pop_back(); snakes.erase(snakes.begin()); snakes.emplace_back(strongest.id, strongest.power - weakest.power); } return snakes.size(); } int main() { int T; cin >> T; vector<Snake> snakes; for (int t = 0; t < T; ++t) { int k; if (t == 0) { int n; cin >> n; snakes.clear(); for (int i = 1; i <= n; ++i) { int power; cin >> power; snakes.emplace_back(i, power); } } else { cin >> k; for (int i = 0; i < k; ++i) { int x, y; cin >> x >> y; for (auto& snake : snakes) { if (snake.id == x) { snake.power = y; break; } } } } int result = simulateDuel(snakes); cout << result << endl; } return 0; } ``` 这段代码实现了蛇决斗的模拟过程。首先定义了 `Snake` 结构体来存储蛇的编号和体力值,并重载了小于运算符用于排序。`simulateDuel` 函数模拟了决斗的过程,在每一轮中,检查最强的蛇吃了最弱的蛇后是否会成为最弱的蛇,如果会则决斗结束,否则最强的蛇吃掉最弱的蛇继续下一轮。主函数中处理输入,对于每组数据,根据情况初始化或修改蛇的体力值,然后调用 `simulateDuel` 函数得到最终存活的蛇的条数并输出。 ######[AI问答 | 756点数解答 | 2026-03-28 12:51:01]
- 出牌阶段:所有手牌“决斗”皆可当实体牌用! (字节豆包 | 36点数解答 | 2025-07-28 21:57:43)109
- 游戏角色决斗技能的 Python 模拟实现与开发建议(字节豆包 | 759点数解答 | 2026-02-19 22:41:04)24
- 游戏决斗机制的Python代码实现与开发指南(字节豆包 | 1338点数解答 | 2026-02-19 22:48:15)31
- 卡牌游戏技能逻辑的 Python 实现与开发建议(字节豆包 | 1325点数解答 | 2026-02-19 22:53:42)18
- JSP 实现商品展示模块:分页、搜索、交互与美观界面全搞定!(字节豆包 | 19点数解答 | 2024-12-13 15:00:43)338
- Java顺序表高效删除算法实现与实验验证报告(阿里通义 | 1347点数解答 | 2026-03-26 21:08:33)9
- PyCharm 中用 Selenium 编写自动化测试脚本,轻松登录 eShop 测试平台并点击“我的订单”(字节豆包 | 304点数解答 | 2024-11-06 15:38:30)434
- C++ 代码实现自定义运算 x@y = x² + y² - xy 及 x@(x+y) 计算(DeepSeek | 215点数解答 | 2025-12-13 15:08:14)74
- C++ 实现根据输入正整数奇偶性计算偶数和或约数和(字节豆包 | 838点数解答 | 2026-02-28 20:23:59)28
- 洛谷乒乓球题解:11 分制与 21 分制比赛结果计算全攻略(DeepSeek | 675点数解答 | 2025-04-28 18:19:45)305
- C++ 模拟:助冒险者用神秘数字构建直角三角形,开发要点大揭秘! (DeepSeek | 156点数解答 | 2025-09-14 21:30:10)282
- P1007:小核桃数组变换难题,Python代码揭秘最终平方和!(字节豆包 | 416点数解答 | 2026-02-07 18:24:18)45