欢迎来到起遇信息学
起遇信息学正处于上线筹建阶段,以下功能已全部开放免费体验: ✅ 完整题库浏览与代码提交评测(C / C++ / Python / Java 等) ✅ 入门到进阶的系列课程试读、作业与考试 ✅ AI 提示、AI 作业分析等智能助教功能 ✅ 赛事模拟与个人能力报告 ✅ 邮箱注册开放 ⏳ 付费课程订阅与微信/支付宝支付通道 ⏳ 手机号登录,微信扫码登录、微信公众号绑定 使用中如遇任何问题,欢迎通过页面底部 **"联系我们"** 与我们沟通。
CF1956B.Nene and the Card Game
Nene and the Card Game
题目描述
你和 Nene 正在玩一款纸牌游戏。游戏使用一副包含 张牌的牌堆,每张牌上写有一个从 到 的整数,并且每个整数 到 恰好各出现 次。此外,桌面上有一个区域用于放置打出的牌(初始时桌面为空)。
游戏开始时,这 张牌被分配给你和 Nene,每人各获得 张牌。
接下来,你和 Nene 轮流进行 个回合,也就是说每人各进行 次操作,由你先手。每一回合:
- 当前玩家从自己手中选择一张牌,假设牌上的数字为 。
- 如果桌面上已经有一张数字为 的牌,则当前玩家获得 分,否则不得分。然后,他将这张数字为 的牌放到桌面上。
注意,所有回合都是公开进行的:每位玩家在任何时刻都能看到桌面上的所有牌。
Nene 非常聪明,她总是以最优策略选择出牌,以使自己在游戏结束( 回合后)获得的分数最大。如果有多种最优选择,她会选择能让你最终得分最少的那种。
更正式地说,Nene 总是优先最大化自己的最终得分,其次最小化你的最终得分。
假设牌已经分配完毕,你手中的牌上的数字为 。请问如果你也采取最优策略,你最多能获得多少分?
输入格式
每组测试数据包含多个测试用例。第一行包含一个整数 (),表示测试用例的数量。
每个测试用例的第一行包含一个整数 (),表示你和 Nene 各自手中的牌数。
第二行包含 个整数 (),表示你手中每张牌上的数字。保证每个整数 到 在序列 中最多出现 次。
保证所有测试用例中 的总和不超过 。
输出格式
对于每个测试用例,输出一个整数,表示你在采取最优策略时最多能获得的分数。
说明/提示
在第一个测试用例中,你手中的牌上的数字为 、、 和 。Nene 手中的牌上的数字为 、、 和 。游戏过程可能如下:
- 你选择一张数字为 的牌并放到桌面上。
- Nene 选择一张数字为 的牌并放到桌面上。
- 你选择另一张数字为 的牌,获得 分,并将其放到桌面上。
- Nene 选择另一张数字为 的牌,获得 分,并将其放到桌面上。
- 你选择数字为 的牌并放到桌面上。
- Nene 选择数字为 的牌,获得 分,并将其放到桌面上。
- 你选择数字为 的牌并放到桌面上。
- Nene 选择数字为 的牌,获得 分,并将其放到桌面上。
最终,你获得 分,Nene 获得 分。可以证明,如果 Nene 采取最优策略,你无法获得超过 分,因此答案为 。
在第二个测试用例中,如果双方都采取最优策略,你可以获得 分,Nene 获得 分。
由 ChatGPT 4.1 翻译
样例
5
4
1 1 2 3
8
7 4 1 2 8 8 5 5
8
7 1 4 5 3 4 2 6
3
1 2 3
1
1
1
2
1
0
0
在线编程 IDE
建议全屏模式获得最佳体验
| 进入全屏编程 | Alt+E |
| 递交评测 | Ctrl+Enter |
| 注释/取消注释 | Ctrl+/ |
| 缩放字体 | Ctrl+滚轮 |