题目传送门
1 /*
2 题意:给n, k,然后允许给某一个数加上k的正整数倍,当然可以不加,
3 问你是否可以把这n个数变成1,2,3,...,n, 可以就输出Jerry, 否则输出Tom。
4 贪心:保存可能变成的值的方案数,当一个符合,其他所有可能方案减1
5 最大匹配 详细解释:http://blog.csdn.net/u012596172/article/details/40784773?utm_source=tuicool
6 */
7 #include <cstdio>
8 #include <algorithm>
9 #include <iostream>
10 #include <cstring>
11 #include <cmath>
12 #include <string>
13 #include <vector>
14 #include <queue>
15 #include <map>
16 #include <set>
17 #include <ctime>
18 #include <cstdlib>
19 using namespace std;
20
21 const int MAXN = 1e2 + 10;
22 const int INF = 0x3f3f3f3f;
23 int a[MAXN];
24 int cnt[MAXN];
25 int n, k;
26
27
28 int main(void) //HDOJ 5090 Game with Pearls
29 {
30 //freopen ("A.in", "r", stdin);
31
32 int t; scanf ("%d", &t);
33 while (t--)
34 {
35 memset (cnt, 0, sizeof (cnt));
36 scanf ("%d%d", &n, &k);
37 for (int i=1; i<=n; ++i)
38 {
39 scanf ("%d", &a[i]);
40 for (int j=a[i]; j<=n; j+=k)
41 cnt[j]++;
42 }
43 bool win = true;
44 for (int i=1; i<=n; ++i)
45 {
46 if (!cnt[i]) {win = false; break;}
47 for (int j=i; j<=n; j+=k) cnt[j]--;
48 }
49
50 if (win) puts ("Jerry");
51 else puts ("Tom");
52 }
53
54 return 0;
55 }
56
57 /*
58 Jerry
59 Tom
60 */