FZU ACM 联合训练 Day5总结

题解

A

题意:
给你一个字典树,让你构造一个AC自动机,也就是求每个点的fail指针。(字符集十万级大小)

口胡:
感觉跟普通AC自动机的求法差不多?其实不是很会字符串,听说用主席树和后缀数组都可以过。
有神仙会做的话麻烦指点一下老弟。

感受:
考场上根本没想这题,全被乱搞题耗死了。

B

题意:
给一张有向无权图,求所有点对最短路长度的平方和。(稠密图,点数2000级别)

题解:
乱搞题。
考虑BFS求单源最短路径,但是它是个稠密图,怎么搞才不会T勒?
用bitset维护分层闭包,复杂度 \(O(\frac{n^3}{64})\)

感受:
心力交瘁,无话可说。

D

题意:
给你一个无向连通图,每次可以走不超过 \(k\) 步到一个没有到过的点,求一个合法的回路, \(k \geq 3\)

题解:
本来以为是个NP问题客串……
然而,看到 \(k \ge 3\) 还不会做?
跑一棵搜索树,从根开始黑白染色,跳着走过去走回来即可构造出一个可行解。

F

题意:
给定一个元素数为n的全集的若干个子集,对于每个子集,定义小于等于它的子集为编号比它小且被它包含的集合,求最长不降子序列的个数。(子集个数 \(\leq 2*10^5\),全集大小 \(\leq 16\)

题解:
好一个 Data Structure You've Never Heard Of
考虑暴力,有两种做法(我似乎当时都想到了):

  • 加入顶点时,暴力更新其超集的答案,查询直接做。
  • 查询答案时,暴力计算其子集的答案,加入直接做。

利用均摊思想,很显然,我们只要把全集的元素拆成两半,对于每个子集分别用一种暴力维护就好了。复杂度 $O(n * 2^{\frac{d}{2}}) $ 。

感受:
乱搞题,全场AC,但是我死也想不出来。

J

题意:
给定一个四元组间的二维顺序(一维是下标,一维是权值),求所有满足条件的四元组,大概要求平方级的复杂度。

题解:
好一个 24 Data Structures You've Ever Heard Of
枚举24种可能的顺序,稍微剪枝一下(对序列进行取反或是转置)完只剩8种,分别想办法解决就行。

感受:
首杀!感谢Twii,感谢czhou,感谢AHSFNU。

Other

不会。会了也不想写。

全场感受

可能确实是我太菜了吧,乱搞题都不会做,给fz丢人了。

posted @ 2019-10-05 22:02  臼邦庶民  阅读(288)  评论(2编辑  收藏  举报