[十二省联考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:

猜你喜欢

转载自www.cnblogs.com/yinwuxiao/p/10674102.html