首页 > 其他分享 >十二省联考 2019 题解

十二省联考 2019 题解

时间:2023-01-09 22:46:43浏览次数:37  
标签:dots 连边 le 每个 类串 后缀 题解 2019 联考

Day 1

B 字符串问题

朴素的想法是,建一张 \(n_a+n_b\) 个点的有向图 \(G\)。对于一个支配关系 \((x,y)\),从 \(x\) 向 \(y+n_a\) 连边。此外,枚举 \(1\le i\le n_b\),对于每个满足 \(B_i\) 是 \(A_j\) 前缀的 \(j\),从 \(i+n_a\) 向 \(j\) 连边。

若 \(G\) 内有环,则显然答案为 \(-1\)。否则,设点 \(u\) 的点权是 \([u\le n_a]\left(ra_u-la_u+1\right)\),只需求出该图上点权和最大的一条路径即可。

上述做法的复杂度瓶颈在于建图,考虑如何优化。对 \(S\) 的反串建出后缀树,考虑两个子串 \(S_{l_1\dots r_1},S_{l_2\dots r_2}\),设它们在反串后缀树上的点定位分别是 \(u_1,u_2\)。那么 \(S_{l_1\dots r_1}\) 是 \(S_{l_2\dots r_2}\) 的前缀,当且仅当:

  • \(u_1\neq u_2\) 且 \(u_1\) 是 \(u_2\) 的祖先;
  • 或者,\(u_1=u_2\) 且 \(r_1-l_1\le r_2-l_2\)。

考虑直接将后缀树的结构放进 \(G\) 中。设后缀树上共有 \(s\) 个节点,在 \(G\) 中新建 \(s\) 个节点并保留后缀树上的连边。对于每个 A 类串 \(A_i\),设其点定位是 \(u\),从 \(\mathrm{fa}_u\) 向 \(i\) 连边;对于每个 B 类串 \(B_j\),从 \(j+n_a\) 向其点定位连边。

此时只剩下在相同节点上的字符串没有处理了。对于每个点 \(u\),将所有点定位到 \(u\) 的字符串按照长度从小到大排序。对于每个串从它前面第一个 B 类串向它连边即可。

时间复杂度 \(O(|S|+m+(n_a+n_b)\log |S|)\)。

C 骗分过样例

别急。

标签:dots,连边,le,每个,类串,后缀,题解,2019,联考
From: https://www.cnblogs.com/alan-zhao-2007/p/17038730.html

相关文章

  • 1.9寒假集训-进阶训练赛(五)A-M题解
    前五题网上都有不写了需要注意的是第四题是给定密钥和密文要把它加密算是一个逆过程看了半天都没读懂样例 第六题应该也有但是我写一下因为学校oj这边空间给的是1......
  • HDU-3949 XOR 题解报告
    题目地址题意:从一个序列中取任意个元素进行异或,求能异或出的所有数字中的第k小。分析:性质:一个线性基异或上另一个不同的线性基,并作为自己的新值,这并不改变整个线性......
  • windows10下QT5.9.9安装和在VS2019中环境部署(保姆级教程)
    https://www.cnblogs.com/unicornsir/articles/16825578.html1.下载QT5.9.92.安装QT,最好提前注册号一个QT账号(不提前注册也可以,看后面操作)3.在VS2019中部署QT5.9.94.......
  • 【CF802O】April Fools' Problem (hard) 题解 (线段树模拟费用流)
    线段树模拟费用流。LG传送门。SolutionPart1根据题面,显然想到此题是费用流。建图方式亦是显然:\(S\rightarrowi\),流量为\(1\),费用为\(a_i\);\(i\rightarrowT_0\)......
  • contest739E. Gosha is hunting 题解报告
    题目地址题意:现在一共有\(n\)只神奇宝贝。你有\(a\)个『宝贝球』和\(b\)个『超级球』。『宝贝球』抓到第\(i\)只神奇宝贝的概率是\(p_i\),『超级球』抓到的......
  • 牛客小白月赛65D题 牛牛取石头 题解
    原题链接第一眼看到这道题,其实很容易会联想到经典的bashgame问题这道题并没有巴什博弈那么复杂,但也算一道比较新颖的博弈论题吧还是很适合作为一道博弈论入门题的题......
  • P8932 [JRKSJ R7] Clock Paradox 题解
    在洛谷上阅读Part0题意简述原题这场月赛我唯一AC的题给出一个字符串\(S\),令\(T=S\),求使用\(S\)的子串插入\(T\),将\(T\)变形的最少的操作次数。且字符串\(S\)......
  • Educational Codeforces Round 141 (Rated for Div. 2) A-C题解
    比赛链接A、MakeitBeautiful一种构造方法:按照从大到小的顺序构造,可以发现前缀和永远大于当前值。但是需要特判存在两个最大值的情况。只需要将最小值与第二位交换位置......
  • re | [RCTF2019]asm
    re|[RCTF2019]asm简单file一下:推测是risc-v64位,去网上找逆向脚本:这个反汇编器是可以用的:https://github.com/riscv/riscv-gnu-toolchain或者用下面这个idaproc可以......
  • P5999 [CEOI2016] kangaroo 题解
    分析一个妙妙的trick。首先原题可以转化成求有多少\(1\simn\)的排列\(p\)满足\(\foralli\in(1,n)\),\(p_i\)两边的数同时小于或大于\(p_i\),且\(p_1=s,p_n=t\)......