zoukankan      html  css  js  c++  java
  • 2018 Multi-University Training Contest 2

    2018 Multi-University Training Contest 2

    题解

    C - Cover

    题目描述:给定一个图(不一定联通),用最少的的欧拉路径或欧拉回路覆盖,输出方案。

    solution
    一个个联通块处理,对于一个联通块(如果只有一个点,那就可以忽略了),一定有偶数个度数为奇数的点(设为(k)个),将这些点每两个配对连边,走一次欧拉回路,然后将这些边删掉,就可以分成(max(k/2, 1))路径,而这就是最优的。

    时间复杂度:(O(n))

    D - Game

    题目描述:在集合里有(n)个元素((1)~(n)),两个人玩游戏,每次从集合里面选一个数,然后将他的所有约数从集合里删掉,谁不能选数,谁就输。问先手是否必胜。

    solution
    (1)是一个非常特殊的数,因为无论删什么数,都会删(1)。如果先手不删(1)有必胜策略,则必胜,如果必败,则删(1),把败局扔给后手,必胜,所以先手必胜。

    时间复杂度:(O(1))

    E - Hack It

    题目描述:有一个(n imes n)的方阵,每一个是(0)(1),现在有一个算法来判断这个方阵是否存在一个子矩阵,它的四个角都是(1),所在要构造一个(n leq 2000)的方阵,使得里面有至少(85000)(1),但满足条件的子矩阵不存在。

    solution
    (n=p^2,p)是质数,这里(p=47),然后这个方阵由(p^2)(p^2)的方阵组成,现在要填数进去,使得任意两行至多只有一列都有(1)
    对于(k, b, i<p, a[kp+b][ip+(ki+b)\%p]=1)
    (k_1 eq k_2),假设(ip+(k_1i+b)\%p=ip+(k_2i+b)\%p)(不可能左边是(i),右边是(j)),判断是否存在(j)也满足等式,假设(jp+(k_1i+b)\%p=jp+(k_2i+b)\%p),两式相减,则
    ((i-j)k_1=(i-j)k_2 (modp)),因为(p)是质数,且(k_1 eq k_2),因此等式不成立,所以不存在(j)也满足等式,即没有两列同有(1)
    因此这种构造是对的,只要取前(2000 imes 2000)的矩阵即可。

    时间复杂度:(O(p^4))

    F - Matrix

    题目描述:有一个(n imes m)的矩阵,每个格子要么是黑色,要么白色,问有多少种方案使得至少有(A)行黑色,(B)列黑色。

    solution

    这个题解说得挺详细的,但按着那里说的貌似答案不对。

    G - Naive Operations

    题目描述:给定一个(n)排列(B),有一个长度为(n)的序列(A),初始全都为(0),现在有两种操作:1、给(A)的一个区间全部加(1),2、询问一个区间的(left lfloor frac{a_i}{b_i} ight floor)的和

    solution
    有两种做法:
    1、用线段树维护对于区间([L, R]),要加多少次(1)才能使区间里的一个数的答案加(1),一旦存在就从该点往下更新答案。

    2、离线处理所有的加操作,按左端点从小到大排序,用线段树求出每个位置的数在哪里次加操作后答案加一,然后再按时间顺序进行正常操作。

    时间复杂度:(O(nlog^2n))

    J - Swaps and Inversions

    题目描述:对一个序列进行操作,操作后的总花费为序列的逆序对个数乘(x),而进行一次操作需要花费(y),操作是交换相邻两个数。

    solution
    交换相邻两个数可以消除一个逆序对,因此答案等于逆序对个数乘(min(x, y))

    时间复杂度:(O(nlogn))

  • 相关阅读:
    python基础()
    《野草在歌唱》读后感 读书笔记
    《饥饿的盛世》读后感 读书笔记
    《T.S.艾略特传:不完美的一生》读后感
    《宋徽宗》读后感 读书笔记
    《孔子传》读后感 读书笔记
    《武曌》读后感 读书笔记
    《百岁人生》读后感 读书笔记
    《曾国藩的正面与侧面》读后感 读书笔记
    《洞见》读后感 读书笔记
  • 原文地址:https://www.cnblogs.com/GerynOhenz/p/9492263.html
Copyright © 2011-2022 走看看