AtCoder Regular Contest 105 选做

C - Camels and Bridge

一座桥有 \(M\) 部分,第 \(i\) 部分承重 \(v_i\),长度 \(l_i\)

\(N\) 个人要过桥,第 \(i\) 个人的重量是 \(w_i\)

你需要将这 \(N\) 个人排成一队,可以随意安排这 \(N\) 个人的顺序、两两之间的距离。

一个人站在某个部分的端点上时,其重量不计入任何部分。

求最小化的第一个人和最后一个人之间的距离。

\(2 \le N \le 8\)\(1 \le M \le 10^5\)\(1 \le w_i, l_i, v_i \le 10^8\)

2s, 1GB

暴力 \(O(N!)\) 枚举过桥的顺序。

接下来贪心求出每个人离排头的最短距离即可,正确性显然。

考虑具体如何贪心:对于当前正在安排的人 \(i\),因为 \(1 \sim i - 1\) 之间的距离已经被安排好了,于是枚举前面的另一个人 \(j\),对于 \(j \sim i\) 这一段,在 \(M\) 个部分中二分查找出承重 \(\le w_j + \cdots + w_i\) 的最长距离,即可以算得 \(i\) 的位置。

时间复杂度 \(O(N!N^2\log M)\)

https://atcoder.jp/contests/arc105/submissions/25999319

D - Let's Play Nim

\(n\) 个袋子,\(n\) 个盘子,初始时第 \(i\) 个袋子里有 \(a_i\) 个石头,盘子都是空的。

A, B 两人轮流操作,A 先:

  • 如果当前还有袋子非空,则选择一个袋子,将里面的所有石头倒到某个盘子中。
  • 如果当前袋子都是空的,则选择一个盘子,从中取走至少一个石头。

不能操作者输。

试判断谁会赢,需要回答 \(T\) 组数据。

\(1 \le T \le 10^5\)\(1 \le N \le 10^5\)\(\sum N \le 2 \times 10^5\)\(1 \le a_i \le 10^9\)

2s, 1GB

根据 \(n\) 的奇偶讨论。

\(n\) 是奇数时,先手希望最终盘子里石头的异或和为 \(0\),但这是不可能实现的,因为后手必然可以选择当前最大的一个袋子,将里面的石头全部倒入当前石头最多的一个盘子中,只要这么做,异或和不可能等于 \(0\)。所以 \(n\) 是奇数后手必胜。

\(n\) 是偶数时,先手希望最终盘子里石头的异或和不为 \(0\),那么,除非每种数量的袋子都有偶数个,后手可以通过模仿棋来取胜,不然的话,先手也可以利用每次选择最大的袋子倒入石头最多的盘子的方法,保证异或和不为 \(0\)

根据上述过程判断即可,时间复杂度 \(O(N \log N)\)

https://atcoder.jp/contests/arc105/submissions/26013056

E - Keep Graph Disconnected

给定一张包含 \(N\) 个点,\(M\) 条边的无向图 \(G\),第 \(i\) 条边连接 \(a_i, b_i\)

\(G\) 被称为好图当且仅当:

  • \(1\)\(N\) 不连通。
  • 没有重边和自环。

保证初始时 \(G\) 是好图。

现在 A, B 轮流操作,A 先。每次选择两个点 \(u, v\),在它们之间加一条无向边,当某个人操作后 \(G\) 不再是好图就输了。

试判断谁会赢,需要回答 \(T\) 组数据。

\(1 \le T \le 10^5\)\(2 \le N \le 10^5\)\(0 \le M \le \min(\frac{N(N-1)}{2}, 10^5)\)\(1 \le a_i, b_i \le N\),初始图是好图,\(\sum N, \sum M \le 2 \times 10^5\)

首先可以发现,游戏结束的时候图中一定是包含了两个连通块。

设两个连通块的大小分别为 \(n\)\(N - n\),加入的边的条数就是 \(N(N-1) / 2 - n(N - n) - M\),而胜负也就取绝于这个数的奇偶性。

注意到,当 \(N\) 为奇数时,\(n(N - n)\) 必然是偶数,那么胜负是固定的,可以直接判掉。

接下来考虑 \(N\) 为偶数的情况。令 \(x, y\) 分别表示初始包含 \(1\)\(N\) 号点的连通块大小。

如果 \(x \not\equiv y \pmod 2\),那么去掉 \(1, N\) 所在的两个连通块,图中还剩下奇数个奇连通块,那么先手必然可以控制 \(1, N\) 所在连通块的奇偶性,进而达到必胜的目的。

如果 \(x \equiv y \pmod 2\),那么如果原始图上是利于 A 的局面,A 必然可以维护好这个局面;如果原始图上是利于 B 的局面,那么当 A 试图改变局面时,必然会被 B 阻拦(原因参见上一种情况)。所以这种情况的答案取绝于初始局面。

所以直接 DFS 一遍即可回答问题,时间复杂度 \(O(N)\)

https://atcoder.jp/contests/arc105/submissions/26017269

posted @ 2021-09-20 22:41  syksykCCC  阅读(92)  评论(0编辑  收藏  举报