
字符串
WayJasy
叁肆伍叁,伍肆伍物
展开
-
2019-2020 ICPC SEERC D - Cycle String?(思维+模拟)
传送门题意:给定长度为2∗n2*n2∗n的循环字符串,对其重新排列使得新字符串中不存在两个及以上长度为nnn的相同子串,问能否构造成功并输出任意新字符串。思路:首先容易发现新串是否合法与出现最多字符的数量有关,稍微打个表发现:出现次数最多的字符(一下称chchch)出现了xxx次.①①①如果x<=nx <= nx<=n,那么我们直接输出原串就好了。②②②如果字符种类数...原创 2019-11-12 21:46:20 · 862 阅读 · 0 评论 -
2019徐州网络赛 G题 (回文树 节点回文串不同的字符个数)
传送门题意:对于给定的字符串,求每个子回文串中不同的字符个数之和。思路:回文树。cnt[i]cnt[i]cnt[i]表示节点 iii 的回文串个数。sum[i]sum[i]sum[i]表示节点 iii 表示的回文串的不同字符个数。在构造回文树的时候判断当前插入的字符 ccc 在其匹配位置 curcurcur 处是否出现过, 在继承curcurcur的答案的基础上进行更新。#incl...原创 2019-09-07 19:44:32 · 301 阅读 · 0 评论 -
hdu 5421回文树头尾插入更新查询
传送门题意:每次可以从已有字符串的头部或者尾部插入一个字符,查询本质不同的回文子串个数和总共的回文子串个数题解:难点就在于插入操作。如果插入当前字符后,整个字符串并不是个回文串,那么从头插或者从尾插对结果无影响。但是如果插入后整个字符串构成了回文串,那么从尾插就会影响到从头插的结果。因此维护两个头尾指针,其他的操作基本不变。注意如果当前插入操作的len[last]len[last]len[...原创 2019-07-30 20:13:03 · 136 阅读 · 0 评论 -
Gym - 100548G (回文树,公共前缀的对数)
传送门题意:给你两个字符串s1,s2s1,s2s1,s2,求它们的公共前缀有多少对题解:对s1s1s1建一棵回文树,然后部分初始化,再在s1s1s1的基础上对s2s2s2建回文树。 然后对cntcntcnt乘积求和为什么可以这样?因为第一次建树的时候求出了s1s1s1在每个节点不同的回文子串个数,s2s2s2插入进来的时候,如果当前节点已经存在了回文子串,那么s2s2s2在当前节点的回文子...原创 2019-07-30 16:08:01 · 206 阅读 · 0 评论 -
hdu 5157(回文树 num数组的应用)
传送门题意:求不相交回文子串的pair数题解: 回文树中, num[i]num[i]num[i]数组表示以iii为回文子串的结尾的回文串有多少个,那么对于每个num[i]num[i]num[i]我们求一次前缀和,得到的就是到iii为止的回文串个数。 那么我们对字符串正反各建一棵回文树,各求一次前缀和。答案就是两者乘积之和。#include<bits/stdc++.h>using...原创 2019-07-30 14:29:56 · 166 阅读 · 0 评论 -
最长公共回文子串(回文树做法)
题目链接之前用马拉车+二分哈希做过,但是非常复杂而且容易写错。最近翻博客翻到这题而且正好学了回文树,用回文树真的非常快就能解决这个问题。对于两个串s1,s2s1,s2s1,s2分别建两棵回文树、然后对于偶串根dfsdfsdfs一遍,奇串根dfsdfsdfs一遍,更新答案.#include<bits/stdc++.h>using namespace std;typedef ...原创 2019-08-02 15:48:33 · 448 阅读 · 0 评论 -
HYSBZ - 2160 (回文树)
传送门题意:给定一个字符串,找出该串中长度为奇数的最长kkk个子回文串,并且求出它们的乘积题解: 由于kkk很大,所以不能简单的sortsortsort用回文树处理出每个节点的回文串长度,并且记录下该节点下该回文串长度的串有多少个,然后快速幂模拟一下。注意细节!#include<bits/stdc++.h>using namespace std;typedef long ...原创 2019-07-30 11:26:54 · 146 阅读 · 0 评论 -
HYSBZ 2565 最长双回文串
题意:找到一个最长回文子串,该子串能够分成两长度大于0的部分,每部分都是一个回文串题解:回文树维护一个以i为起点和终点的最长回文串长度数组即可#include<bits/stdc++.h>using namespace std;typedef long long ll;const int MAXN = 1e5+5;const int N = 27;struct Palin...原创 2019-07-30 10:39:15 · 157 阅读 · 0 评论 -
2019牛客多校第四场 I-string (SA+PAM)
传送门用SA处理出S#rev(S)的不同子串个数P,减去包含了#的子串个数,这样非回文串的个数就被计算了两遍,而回文串个数只计算了一遍,因此再用PAM处理出S的本质不同的回文子串个数Q,答案就是(P+Q)/2#include<iostream>#include<algorithm>#include<cstdio>#include<stdio.h&...原创 2019-07-30 09:23:47 · 293 阅读 · 0 评论 -
FJUT 14届校赛 J题 hash判子串
http://www.fjutacm.com/Contest.jsp?cid=705#P9题意:两个字符串S,都是01串),问能否在至多改变T的一个字符的情况下,使得T是S的子串(连续的)两个字符串S,都是01串), 问能否在至多改变T的一个字符的情况下,使得T是S的子串(连续的)两个字符串S,都是01串),问能否在至多改变T的一个字符的情况下,使得T是S的子串(连续的)题解:hash。对S...原创 2019-05-13 20:56:10 · 181 阅读 · 0 评论 -
最长公共回文子串 (manacher+hash+二分)
求两个字符串(记为s1,s2)的最长公共回文子串解法:先用mnanacher算法O(n)处理出 s1串的最长回文子串长度 L,那么最后的答案肯定是L,L-2,L-4 ~ 0,并且我们已经求出了 p[i] 数组(以i为中心的最长回文半径),用于后面二分答案的判断。这里有个坑点:二分时奇偶回文要分开二分。因为如何有2k+2长度的公共回文。肯定也会有2k长度的公共回文,但是不保证也有...原创 2019-04-09 00:30:16 · 815 阅读 · 0 评论