zoukankan      html  css  js  c++  java
  • 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^2log 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 imes 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 imes 10^5)

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

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

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

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

    如果 (x otequiv 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

  • 相关阅读:
    随手记
    jira默认是jira_user用户组的用户有登录jira的权限 上海
    loadrunner11安装 上海
    虚拟机增加内存方法 上海
    centos6中安装VMware Tools 上海
    linux安装过程中遇到的一些问题总结 上海
    C语言指针方法对字符串进行去重 上海
    在linux环境下搭建JDK+JAVA+Mysql,并完成jforum的安装 上海
    关于pl/sql打开后database为空的问题解决办法 上海
    字符串表达式求值(支持多种类型运算符)
  • 原文地址:https://www.cnblogs.com/syksykCCC/p/ARC105.html
Copyright © 2011-2022 走看看