zoukankan      html  css  js  c++  java
  • [十二省联考2019]

    题解:

    day1:

    t1:

    总共的配对数是n^2的

    考虑我们枚举一个点如何找和它的最大值

    这个显然trie是可以做的

    于是想到维护每个点对应的当前最大值,那个堆维护一下就可以了

    trie的话用主席树建可持久就可以了

    t2:

    这种题一看就知道大概是后缀自动机。。

    暴力的话就是我们可以对每个bi向aj连边当且仅当bi是aj的前缀

    另外ai向bj连边当且仅当ai掌握了bj

    然后跑个最长路(顺便判个环)就可以了

    这样建图的边数是n^2的

    复杂度n^2logn

    其中部分分对于保证$rai+1=lai+1$这个你对相同的b建在一起

    这样是可以保证连边是O(n)的这样就有60分了

    至于ai>=bj我不知道有啥用。。

    正解的话就是利用后缀自动机优化一下建图

    把bi向aj的连边改成向parent树的子树的连边,复杂度$nlogn$

    好像可以做到$nalpha{(n)}$的复杂度没有去看。。

    day2:

    t1:

    这题的正解简直跟乱搞差不多。。

    刚开始傻逼了

    设了个dp[i][j][k][o]代表4个导师的状态

    前50+后面两个k=0的还是比较简单的

    对于前50,令dp[i][j][k]表示操作了前i个人,蓝阵营、亚派系的人数,对于同省的一起搞一下

    然后对于k=0的,我们仔细观察一下上面这个dp

    会发现j,k互不影响

    于是分开搞再乘一下就可以了

    t2:

    这题我的做法和正解不太一样

    大概正解就是发现合并的时候贪心按大到小是对的,于是树上启发式合并

    但这个启发式合并的复杂度是O(n)的 因为每个点只被删一次

    (其实你不启发式只要合并的时候做到另一个空了这个东西就是O(n)的了)

    再套个堆就是nlogn

    我的做法是从暴力上优化

    暴力即每次贪心地从大到小能选则选(n^2)

    我们考虑选到当前物品时,有几种包是当前物品肯定不能放的

    答案应该等于根到该点子树中某一点经历点的最大值

    于是这个简单的用线段树维护就可以了 复杂度nlogn

    t3:

  • 相关阅读:
    转载一篇 Linux 命令总结
    Linux 常用命令学习
    frp 使用
    Anaconda使用记录
    Linux 学习
    lnmp下django学习
    lnmp安装学习
    学习DHT内容
    pyqt5配置
    MyBatisPlus 常用知识点总结
  • 原文地址:https://www.cnblogs.com/yinwuxiao/p/10674102.html
Copyright © 2011-2022 走看看