[十二省联考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$
好像可以做到$n\alpha{(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: