• January Challenge 2021 Division 1


    这场我是先用小号打的div3,然后凑了七题才交的div1,所以下面部分时间实际上div3AC的时间
    Chef and Ants(1.2)
    Expected Number of SCCs(1.3)
    Guess the Tiling(1.8)
    Blackjack(1.2)
    And-Or Game(1.3)
    Cool Subsets(1.4)
    Sequence Creation(1.9)
    Curious Matrix(1.6)
    Stack-Queue Sort
    Greedy Students

    达成新成就:
    第一次在Challenge题上拿到了分(虽然只有可怜的4分)

    挑几题讲讲

    Sequence Creation

    结论:对于两个长度为(m)的序列({A},{B}),其构成合法序列的充要条件是:(A_i)(B_i)之间连边,不存在某个连通块有两个及以上的环

    至于计数,很简单,可以自己思考一下

    对于(M_i),可以发现随着(i)的减小,右端点是不增的,故这部分移动是(O(1))
    然后可以用lct维护基环树

    Curious Matrix

    结论:对于一个(n imes n)的矩阵满足题目要求,充要条件是:所有(2 imes 2)的子矩阵行列式为(p)的倍数

    证明显然

    (a_{1,1}=key)(x_i=a_{1,i}(i eq 1))(y_i=a_{i,1}(i eq 1))
    很容易发现(a_{i,j}=x_jcdot y_icdot key^{-1}(ige 2,jge 2))

    很容易想到并查集维护

    先考虑(O(n^2logn))的方法((logn)是并查集的因子),容易用线段树实现(O(nlog^2n))

    这里的并查集与之前我写过的均不同,思考了将近一天,最后在与emofunc神仙交流的时候突然迸发出的灵感
    我们不需要维护所有点的值,如果要维护的话,需要维护(x_i)(x_icdot key^{-1}),甚至(x_icdot key),非常不好写,我写了将近8k,然后交上去全WA

    对于一个连通块,若某个(x_i)是已知的,则其他(x_j)都可以通过其判断是否合法
    对于一个连通块,若某个(x_i,y_j)是已知的,则(key)可以解出来

    计数比较简单,自己思考一下吧

  • 相关阅读:
    打造属于自己的谷歌Maps版博客公告【演示+源码】
    CentOS 更改默认启动顺序
    VC的控制台程序,如何获取输入参数和环境变量
    如何同时提供ANSI和UNICODE函数
    VC工程需要注意字符集问题
    升级firefox到最新版
    VC工程需要注意字符集问题
    如何同时提供ANSI和UNICODE函数
    使C++ Builder编译程度独立运行
    安装谷歌浏览器
  • 原文地址:https://www.cnblogs.com/Grice/p/14254739.html
Copyright © 2020-2023  润新知