D - Game on a Graph
基本信息
题目出处 | 2019 山东省大学生程序设计竞赛 |
队伍通过率 | 233/307 (75.9%) |
题解
连通图最少需要 \((n - 1)\) 条边,因此最多可以操作 \((m - (n - 1))\) 次,输的人就是 \((m - (n - 1)) \bmod k\)。考虑到读入,复杂度 \(\mathcal{O}(k + m)\)。
参考代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 | #include <bits/stdc++.h>
#define MAXK ((int) 1e5)
using namespace std;
int K, n, m;
char s[MAXK + 10];
void solve() {
scanf("%d%s%d%d", &K, s, &n, &m);
for (int i = 1; i <= m; i++) scanf("%*d%*d");
int delta = m - (n - 1);
char lose = s[delta % K];
if (lose == '1') printf("2\n");
else printf("1\n");
}
int main() {
int tcase; scanf("%d", &tcase);
while (tcase--) solve();
return 0;
}
|