Codeforces Round 1007 (Div. 2) 比赛记录
比赛链接
很喜欢的一场比赛,题目质量很高,不是手速场,做出题超级有成就感,赛时切掉了 A - D1,上大分了。
B卡得有点久,其实是一个很常用的构造手法但一开始没想到。
过题记录:
A. The Play Never Ends
题意大概就是,每场两个人打,一个人观战。如果有一个人以及连续打了两场,则这场无论如何这个人都要下去,否则输的那个下去,问第 \(k\) 场的时候第一场观战的人能否观战。
假设第一场打的人分别是 A 和 B,A 获胜,观战者是 C,手玩一下小一点的样例发现,第二场 C 一定上场,此时 A 已经打了一场,那么 A 和 C 打完后,无论如何,下的都是 A,再打一场后,由于 C 已经打了两场了,所以无论如何,下的都是 C,如此进行下去可以发现,输赢无所谓,因为总有一方连续打了两场,必须下,因此实际上就是三个人轮换,所以 C 观战的时候就是 \(k \bmod 3 = 1\) 的时候
[code]void solve(){ int n;cin >> n; if(n % 3 == 1)cout n; if(vis.count((n + 1) * n / 2)) { cout ed; init(n); for(int i = 1;i < n;i ++) { int u, v;cin >> u >> v; g.push_back(v); g[v].push_back(u); } dfs(st, 0); dfs1(st, 0); ans.push_back(ed); for(auto &i : ans) { cout l >> r; for(int i = 1;i > a; for(int i = 1;i |