ACM-ICPC 2018 南京赛区网络预赛 C. GDY [ 模拟 ]
题目链接: ACM-ICPC 2018 南京赛区网络预赛 C. GDY 题意概括: 有 n 个仓鼠玩牌。有 13 种牌面分别标着整数 1至13 。现在有 m 张牌叠在一起(会有重复的牌),规则如下: 先轮流摸牌一次,每次摸 5 张。牌的数量保证每只仓鼠都有至少一张牌。因此最后一只可能只能拿到少于 5 张的牌,但不会没牌 第 1 位首先出其牌面数字最小的牌,后一位出牌面刚好大 1 的牌。也就是说,当前只能出比前一张大一的牌或牌 2 。大小关系: 只要前一张牌不是 2 ,牌 2 在任何时候都可以出,不需要满足刚好比前一张牌大 1 若当前有牌可出,则一定要打出。若无牌可出则什么都不用做。 若第 X 位出了牌后,其他几位的都无牌可出,经过一轮又回到 X 时: 从 X 开始轮流抽一张牌,若到某位没有牌了,则跳过不抽。抽完后,从 X 开始,出其牌面最小的牌,以此循环 数据范围: 题解分析: 就是纯模拟题,看懂题面就完成了一大半。为了方便操作,这里维护一个二维数组 int player[MAXN][14] player[i][j] 表示的是第 i 位拥有牌面为 j 的牌的数目 一定要仔细啊,有很多细节会出错。比赛的时候没找出错在哪里,赛后队友帮我debug出来的 AC代码: #include <stdio.h> #include <memory.h> using namespace std;