啥都不会啊!怎么办啊!

Fitz

慢慢来生活总会好起来的!!!

随笔分类 -  回文自动机

摘要:签到提; 题意:求出每一个回文串的贡献 (贡献的计算就是回文串不同字符的个数) 题解: 用回文树直接暴力即可 回文树开一个数组cost[ ][26] 和val[ ] 数组; val【i】表示回文树上节点 i 的对应的回文的贡献 最后统计答案即可 1 #include <set> 2 #include 阅读全文
posted @ 2019-09-07 19:03 Fitz~ 阅读(190) 评论(0) 推荐(0)
摘要:题意: 给你两个串s和t,其中t是由s中选择若干个不相交的区间翻转得到的,现在要求求出最少的翻转次数以及给出方案。 1≤|s|=|t|≤500000 题解: 我们将两个字符串合成成T=s1t1s2t2...sntn T=s1t1s2t2...sntn那么问题就是最少要把整个字符串T 拆分成若干个偶数 阅读全文
posted @ 2019-08-24 10:58 Fitz~ 阅读(358) 评论(0) 推荐(1)
摘要:题意: 给出一个长度为偶数的字符串S,要求把S分成k部分,其中k为任意偶数,设为a[1..k],且满足对于任意的i,有a[i]=a[k-i+1]。问划分的方案数。 n<=1000000 题解: 反正我是不会做 (我是转载的yyb博客,巨佬写的超级超级详细)基本就是照着laofulaofu的打了一遍( 阅读全文
posted @ 2019-08-24 10:54 Fitz~ 阅读(311) 评论(0) 推荐(0)
摘要:题意: 有n种操作,开始给你一个空串,给你4中操作 1 c 在字符串的首部添加字符c 2 c 在字符串的尾部添加字符c 3 询问字符中的本质不同的回文串的个数 4 询问字符串中回文串的个数 思路:last[0]表示首部的操作的位置,last[1]表示尾部的操作的位置 模板提,用上双向的回文树就好了。 阅读全文
posted @ 2019-08-24 10:17 Fitz~ 阅读(222) 评论(0) 推荐(0)
摘要:题意: 记录不相交的回文串对数 题解: 正着反着都来一遍回文树 用sum1【i】 表示到 i 位置,出现的回文串个数的前缀和 sun2【i】表示反着的个数 ans+=sum1【i-1】*sum2【i】 1 #include <set> 2 #include <map> 3 #include <sta 阅读全文
posted @ 2019-08-24 10:14 Fitz~ 阅读(238) 评论(0) 推荐(0)
摘要:题意: 找出所有【i,j】为回文串【j+1,k】也为回文串的i*k乘积之和。 题解: 设sum1【i】 为正着插入,到 i 的所有回文串的起始位置的前缀和,sum2【i】 表示反正插入的前缀和 ans+=sum1【i]*sum1【i+1】 上面的式子很容易让我们想到两遍回文树正着和反着插入操作, 回 阅读全文
posted @ 2019-08-24 10:00 Fitz~ 阅读(204) 评论(0) 推荐(0)
摘要:题意: 输出每个长度下的回文串(这些回文串的左半边也需要是回文串) 题解: 直接套上回文树,然后每找到一个回文串就将他hash。 因为符合要求的回文串本身是回文串,左半边也是回文串,所以它左半边也右半边相同, 自己画个图很容易发现的 每次hash判断一下就好了 1 #include <set> 2 阅读全文
posted @ 2019-08-24 09:49 Fitz~ 阅读(175) 评论(0) 推荐(0)