• AtCoder Regular Contest 105 题解


    A


    计算 (tot = frac{a+b+c+d}{2}) , 枚举子集判断是否相等即可。

    (Theta(1))


    B


    不难发现这个过程的结果类似辗转相减,并且结果一定是所有数 (gcd) 的倍数,也一定是所有数 (gcd) 的约数。

    所以结果自然就是所有数的 (gcd) 了。

    (Theta(n log a_i))


    C


    枚举 (Theta(N!)) 种骆驼的排列方式,然后直接贪心即可。

    (Theta(N!N^2log M)) , 如果精细实现可以强行卡掉这个 (log)


    D


    不难发现放完硬币之后就变成了一个 ( exttt{Nim}) 游戏,而这个 ( exttt{Nim}) 游戏的先后手不知道,所以考虑分类讨论。

    (N) 为偶数时,第一个人在 ( exttt{Nim}) 游戏中是先手,所以他的目标是让 ( exttt{Nim}) 游戏的 (SG) 值为非零数。

    首先如果所有的 (a_i) 都是成对出现的,也就是说每种数的出现次数都是偶数次,那么第二个人可以复制第一个人的所有操作,进而保证 ( exttt{Nim}) 游戏的 (SG) 值为 (0) , 那么第一个人就输了。

    否则第一个人一定能赢,具体策略是一直把当前还没有放过的最大值丢到一个堆里,这样的话就能保证 ( exttt{Nim}) 游戏中有一个堆的总和 (>) 所有硬币数目的一半 ,那么怎么异或都不可能到达 0 了。

    (N) 为奇数时,第一个人在 ( exttt{Nim}) 游戏中是后手,所以他的目标是让 ( exttt{Nim}) 游戏的 (SG) 值为零。

    这时候不管怎么样第一个人一定会输,第二个人只要一直取当前没放过的 (a_i) 中的最大值加到第一个人一开始放的堆里即可保证这个堆的总和 (>) 所有硬币数目的一半,那么第一个人就输了。

    复杂度(Theta(sum n)) .


    E

    F

  • 相关阅读:
    RPC 调用简述
    bootstrap tab切换无效的一种情况
    html块元素和内联元素介绍
    重装系统后,Linux虚拟机无法联网
    datatables.js表头挤在一列的解决办法
           ‌‍ 6种空白空格的区别
    pagination.js通过ajax请求获取数据
    谷歌浏览器调制,控制面板各命令总结
    点击表格弹窗获取另外一套数据之后,原表格相关数据的调用
    datatable columns与columnDefs
  • 原文地址:https://www.cnblogs.com/s-r-f/p/13800431.html
Copyright © 2020-2023  润新知