zoukankan      html  css  js  c++  java
  • 2020-10 杂题选做


    Grakn Forces 2020 题解-洛谷 Grakn Forces 2020 题解-cnblogs

    code 见 A B C D E F G H I


    LOJ#6101. 「2017 山东二轮集训 Day1」第二题

    按照最小值分治到两边,然后直接做即可。

    (Theta(nlog n)) , 如果 (Theta(n)) 建笛卡尔树可以做到 (Theta(n)) .

    code 见 my solution


    AtCoder Regular Contest 104 题解-洛谷博客

    AtCoder Regular Contest 104 题解-cnblogs


    洛谷P6800 【模板】Chirp-Z Transform

    补板子。

    (ans_i = F(c^i) = sumlimits_{j=0}^{n-1} a_jc^{ij})

    众所周知, (ij = inom{i+j}{2} - inom{i}{2} - inom{j}{2}) :

    (ans_i = c^{-inom{i}{2}} sumlimits_{j=0}^{n-1} a_jc^{-inom{j}{2}} c^{inom{i+j}{2}})

    不难发现这是一个卷积形式,模数 (998244353) 为 NTT 模数, NTT 即可。

    几个细节:

    (1.) 注意到我们是把一个长度为 (n+m) 的多项式和 长度为 (n) 的多项式做卷积,但是我们只需要卷积结果的第 (n - (n+m-1)) 项,由于 NTT 是循环卷积,所以我们可以把多项式长度设为 (n+m) , 对答案没有影响。

    (2.) 每次用快速幂算(c^{-inom{i}{2}})(c^{inom{i}{2}})(Theta((n+m)log mod)) 的,非常慢。

    可以 (Theta(sqrt{mod})) 预处理然后光速幂(Theta(1))查询,或者用两次前缀积直接递推结果.

    code 见 my solution


    [USACO19DEC]Milk Visits G

    利用 tarjan 求 LCA 的思想来解决问题。

    考虑把询问挂在点上,然后考虑求出 x -> 根 的路径上最深的对应颜色的点以及 y -> 根 的路径上最深的对应颜色的点 , 如果他们相等,就不满足条件;否则满足条件。

    (Theta(n+q))


    洛谷P6783 【[Ynoi2008]rrusq】

    离线询问,从小到大扫描右端点的同时维护左端点的答案。

    (l_i) 表示第 (i) 个点 ((i,p_i)) 最晚被覆盖到的时间 .

    不难发现我们需要对一个点集的 (l_i) 进行赋值,同时维护一个关于 (l_i) 的后缀和。

    对点建出 KDTree , 每次询问在 KDTree 上遍历并打标记,在打标记的同时要把子树内的所有标记收回。因为收回标记对应着打标记,所以复杂度仍然是 (Theta(m)) 次遍历 KDTree 的复杂度 , 即 (Theta(msqrt n)) 次打标记/收回标记的操作。

    现在我们要完成的问题变成了支持 (Theta(msqrt n)) 次单点修改和 (Theta(m)) 次后缀查询的数据结构 , 不难发现可以用 (Theta(1)-Theta(sqrt m)) 的分块来实现它。

    时间复杂度 (Theta(nsqrt m+msqrt n)) , 空间复杂度 (Theta(n+m))

    code : 见 my solution


  • 相关阅读:
    soap-学习
    Redis教程
    Java 不可变对象
    java volatile
    Go语言
    mongodb 基础语法
    Linux 命令大全
    Java json字符串对比
    sqlserver 数据库阻塞和死锁
    http 和 https 的区别
  • 原文地址:https://www.cnblogs.com/s-r-f/p/13763657.html
Copyright © 2011-2022 走看看