题解-NOI2016 优秀的拆分】的更多相关文章

NOI2016 优秀的拆分 \(T\) 组测试数据.求字符串 \(s\) 的所有子串拆成 \(AABB\) 形式的方案总和. 数据范围:\(1\le T\le 10\),\(1\le n\le 3\cdot 10^4\). 这道题太神了,能一次做出这题的人往往是人形自走题库.真的全是套路! 令 \(n=|s|\),\(f_i\) 表示有几个以 \(s_i\) 结尾的 \(AA\) 串,\(g_i\) 表示有几个以 \(s_i\) 开头的 \(BB\) 串. \[\therefore ans=\s…
[NOI2016]优秀的拆分 https://www.lydsy.com/JudgeOnline/problem.php?id=4650 题解 如果我们能够统计出一个数组a,一个数组b,a[i]表示以i为结尾的AA串个数,b[i]表示以i开头的AA串个数,我们就可以O(n)的统计答案了. 我们开看这么一个算法. 先枚举A的长度len,然后按照A的长度把序列分成很多段,每段有一个代表点即这一段的第一个点. 然后枚举所有代表点l,再枚举r=l+len,求一下(1,l)和(1,r)的最长公共后缀,(l…
[BZOJ4560][NOI2016]优秀的拆分 题面 bzoj 洛谷 题解 考虑一个形如\(AABB\)的串是由两个形如\(AA\)的串拼起来的 那么我们设 \(f[i]\):以位置\(i\)为结尾的形如\(AA\)串的个数 \(g[i]\):以位置\(i\)为开头的形如\(AA\)串的个数 \[ \therefore Ans=\sum_{i=1}^nf[i]*g[i+1] \] 题目的难点转化为求\(f,g\). 但是,其实我们只要\(O(n^2)\)暴力求一下就有\(95pts\)了, 所…
[UOJ#219][BZOJ4650][Noi2016]优秀的拆分 试题描述 如果一个字符串可以被拆分为 AABBAABB 的形式,其中 A 和 B 是任意非空字符串,则我们称该字符串的这种拆分是优秀的.例如,对于字符串 aabaabaa,如果令 A=aab,B=a,我们就找到了这个字符串拆分成 AABBAABB 的一种方式.一个字符串可能没有优秀的拆分,也可能存在不止一种优秀的拆分.比如我们令 A=a,B=baa,也可以用 AABBAABB 表示出上述字符串:但是,字符串 abaabaa 就没…
[NOI2016]优秀的拆分 题目描述 如果一个字符串可以被拆分为 \(AABB\) 的形式,其中 A和 B是任意非空字符串,则我们称该字符串的这种拆分是优秀的. 例如,对于字符串 \(aabaabaa\) ,如果令 \(A=aab\) , \(B=a\) ,我们就找到了这个字符串拆分成 \(AABB\) 的一种方式. 一个字符串可能没有优秀的拆分,也可能存在不止一种优秀的拆分.比如我们令 \(A=a\) , \(B=baa\) ,也可以用 \(AABB\) 表示出上述字符串:但是,字符串 \(…
luogu1117 [NOI2016]优秀的拆分 https://www.luogu.org/problemnew/show/P1117 后缀数组我忘了. 此题哈希可解决95分(= =) 设\(l_i\)表示以i结尾的形如"AA"串的个数,\(r_i\)表示以i+1开头的形如"AA"串的个数. 则答案为 \(\sum l_i r_i\) 先\(O(n)\)hash预处理,然后\(O(n^2)\)处理出\(l,r\)数组 最后5分靠肮脏的打表 单哈希快,双哈希稳 这里…
https://www.lydsy.com/JudgeOnline/problem.php?id=4650 https://www.luogu.org/problemnew/show/P1117 如果一个字符串可以被拆分为 AABB 的形式,其中 A和 B是任意非空字符串,则我们称该字符串的这种拆分是优秀的. 例如,对于字符串 aabaabaa,如果令 A=aab,B=a,我们就找到了这个字符串拆分成 AABB的一种方式. 一个字符串可能没有优秀的拆分,也可能存在不止一种优秀的拆分.比如我们令…
如果一个字符串可以被拆分为\(AABB\)的形式,其中$A和 B是任意非空字符串,则我们称该字符串的这种拆分是优秀的. 例如,对于字符串\(aabaabaa\),如果令\(A=aab\),\(B=a\),我们就找到了这个字符串拆分成\(AABB\)的一种方式. 一个字符串可能没有优秀的拆分,也可能存在不止一种优秀的拆分.比如我们令\(A=a\),\(B=baa\),也可以用 AABB表示出上述字符串:但是,字符串\(abaabaa\)就没有优秀的拆分. 现在给出一个长度为\(n\)的字符串\(S…
题面:洛谷 题解: 因为对于原串的每个长度不一定等于len的拆分而言,如果合法,它将只会被对应的子串统计贡献. 所以子串这个限制相当于是没有的. 所以我们只需要对于每个位置i求出f[i]表示以i为开头的形如BB这样的串的个数,g[i]表示以i为结尾的形如AA这样的串的个数即可. 考虑分别处理这2个数组. 我们可以枚举AA(BB)这样的串中A(B)的长度l,然后把原串每l个字符放在一个块中,在考虑统计答案. 先考虑这样一个问题: 假如固定一个串的结尾,再枚举这个串A的长度,怎样可以判断是否合法?…
$ \color{#0066ff}{ 题目描述 }$ 如果一个字符串可以被拆分为\(AABB\)的形式,其中 A和 B是任意非空字符串,则我们称该字符串的这种拆分是优秀的. 例如,对于字符串\(aabaabaa\),如果令 \(A=aab\),\(B=a\),我们就找到了这个字符串拆分成 \(AABB\)的一种方式. 一个字符串可能没有优秀的拆分,也可能存在不止一种优秀的拆分.比如我们令 \(A=a\),\(B=baa\),也可以用 \(AABB\)表示出上述字符串:但是,字符串 \(abaab…