返回顶部

随笔分类 -  字符串

摘要:题意:给你一个字符串,选择一个前缀,使其不断复制,直到$len>=k$,如果$len>k$,删去多余的尾部,问你能得到的字典序最小的字符串. 题解:基本思路和E1一样,比较后面的字符和$s[1]$,大于就直接break,小于就继续,等于的话,我们要先找到$s_{1...x}$和$s_{i,i+1,. 阅读全文
posted @ 2021-06-27 22:26 _Kolibri 阅读(82) 评论(0) 推荐(0)
摘要:题意:有一字符串,可以将其任意排序,构造完后可以相邻字符两两交换位置,花费为$1$,构造一个复原成原串花费最多的串。 题解:感觉还是不好证明啊,结论就是相同的字符连续在一起一定最优,因为最多只有$4$个字符,所以我们可以全排列,花费就是相对于原串的逆序对数,这里官方题解给的暴力求逆序对的方法感觉很巧 阅读全文
posted @ 2021-06-04 21:51 _Kolibri 阅读(66) 评论(0) 推荐(0)
摘要:题意:给你一个字符串,要求删去重复的字母,使得只剩下一个字母,那么最后的得到的字符串每个字母都只出现一次,问你怎么操作使得最后的字符串字典序最大. 题解:我们先用后缀和处理每个字母出现的次数,然后再用序列自动机预处理一下,首先我们先得到删去重复字母后字符串的长度,然后再去枚举. 因为要求字典序最大, 阅读全文
posted @ 2021-03-29 10:54 _Kolibri 阅读(138) 评论(0) 推荐(0)
摘要:题意:RT,给你一个字符串,问你最少分割多少子串,满足这些子串均为D型回文串. 题解:首先,判断回文我们可以用字符串hash来处理,这里不再赘述. 我们设$dp_i$,表示遍历到$i$位置时我们最少要分割多少子串来满足条件,我们看D型回文串的第一个条件,那么有:\(dp[i]=min(dp[i],m 阅读全文
posted @ 2021-03-29 10:34 _Kolibri 阅读(65) 评论(0) 推荐(0)
摘要:题意:给你一个字符串,找出一个类似为$aaabbbccc$这样的由连续的$abc$构成的子序列,其中$|a|=|b|=|c|$,问字符串中能构造出的子序列的最大长度. 题解:这题刚开始一直想怎么线性扫过,结果好像没有什么思路(其实是可以预处理$b$的个数然后双指针的),但这题最好写的其实还是二分答案 阅读全文
posted @ 2020-12-09 17:18 _Kolibri 阅读(110) 评论(0) 推荐(0)
摘要:题意:给你$n$个字符串,\(s_1,s_2,...,s_n\),对于$i(1\le i\le n)$,找到最大的$i$,并且满足$s_j(1\le j<i)$不是$s_i$的子串. 题解:直接$O(n^2)$然后跑kmp匹配,这里注意要剪枝,不然会T,也就是说对于前$i-1$个串,如果它是后面某个 阅读全文
posted @ 2020-10-09 10:42 _Kolibri 阅读(286) 评论(0) 推荐(0)
摘要:题意:有一个模板串,有$T$个字符串,从字符串中找到某个子串,使得这个子串中的子序列包含模板串,求最短的子串的长度. 题解:找子序列,很容易想到序列自动机,根据序列自动机的原理,我们一定可以确保除了第一个字符,其他的字符的位置都是最优的,所以我们先对模板串的第一个字符$p$记录它的所有位置,然后再遍 阅读全文
posted @ 2020-10-02 21:26 _Kolibri 阅读(125) 评论(0) 推荐(0)
摘要:题意:有一个模板串,给你$T$个字符串,选取最短的子串,使其重新排列后包含模板串,求最短的子串的长度 题解:遍历字符串,记录每个字符出现的最后位置,每记录一个后再遍历子串,找到子串需要的所有的字符的最后出现的最小位置,如果合法,更新答案即可. 代码: const string tp="puleyak 阅读全文
posted @ 2020-10-02 21:21 _Kolibri 阅读(173) 评论(0) 推荐(0)
摘要:题意:给你某个字符串的$n-1$个前缀和$n-1$个后缀,保证每个所给的前缀后缀长度从$[1,n-1]$都有,问你所给的子串是前缀还是后缀. 题解:这题最关键的是那两个长度为$n-1$的子串,我们只要判断哪个是前缀就行了,然后再遍历一遍所给的子串,用长度为$n-1$的前缀子串来判断是子串是前缀还是后 阅读全文
posted @ 2020-08-18 12:38 _Kolibri 阅读(105) 评论(0) 推荐(0)
摘要:题意:给你一个加密的字符串,以及偏移量,求对应的明文. 题解:根据样例,不难看出模板串是:$0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz$,然后我们去遍历密文的每一位,减去偏移量再取个模就行. 代码: class Sol 阅读全文
posted @ 2020-07-24 12:01 _Kolibri 阅读(149) 评论(0) 推荐(0)
摘要:题意:有一个长度为$n$的字符串,你可以选取一个值$k(1\le k \le n)$,然后遍历字符串,每次将区间长度为$k$的字符串反转,求反转后字典序最小的字符串,并输出$k$的值. 题解:这题我是打表找规律写的,观察样例不难发现,当区间长度为$k$时,答案字符串就是将前$k-1$个字符移到了尾部 阅读全文
posted @ 2020-07-01 21:06 _Kolibri 阅读(135) 评论(0) 推荐(0)
摘要:题意:有两个字符串$S$和$T$,判断$T$是否能由$S$通过交换某位置的相邻字符得到,如果满足,输出交换次数及每次交换的位置,否则输出$-1$. 题解:首先判断不满足的情况,只有当两个字符串中出现的字母次数不同时不满足条件,用桶判断一下即可.然后我们再来看有解的情况,我们对$T$的每个字符标上序号 阅读全文
posted @ 2020-06-11 11:03 _Kolibri 阅读(159) 评论(0) 推荐(0)
摘要:传送门:最长回文 题意:给你两个长度相等的字符串A和B,从A中选择一个可以为空的子串A[l1..r1],从B中选一个可以为空的子串B[l2..r2],满足r1=l2.然后把他们拼接在一起,求操作后的最长回文串的长度. 题解:我们可以先对A和B进行manacher(马拉车)预处理,然后我们枚举回文中心 阅读全文
posted @ 2020-04-19 16:26 _Kolibri 阅读(332) 评论(0) 推荐(0)