字符串处理
文章平均质量分 68
逍遥Fau
为伊蕾娜献上心脏!
展开
-
Codeforces126B Password (KMP)
题目链接: Password大致题意给定字符串sss, 求在串中出现过的最长的匹配的前后缀.串中出现: 表示出现非前缀且非后缀.解题思路kmp我们考虑对于长度为nnn字符串sss而言, 最长匹配的前后缀一定是next[n]next[n]next[n]. 但该子串并不一定在串中出现.有可能存在某个短一些的前后缀, 是符合要求的.首先考虑如何判断最长后缀是否合法我们不放统计[2,n)[2, n)[2,n)区间ne[]ne[]ne[]值的情况, 开一个桶cou[]cou[]cou[]进行记原创 2022-01-21 12:27:31 · 518 阅读 · 0 评论 -
Codeforces1466C Canine poetry (思维 贪心)
题目链接: Canine poetry大致题意给出一个仅由小写字母组成的字符串. 你可以把任意位置的字符修改为任意小写字母.问: 至少进行多少次修改, 可以使得字符串中所有长度大于1的连续子串不为回文串.解题思路思维长的回文串内部一定含有短的回文串, 因此如果我们想破坏一个回文串, 我们应破坏其内部的所有短回文串. 这样破的坏的才"彻底".考虑到字符串的回文串只有两种: AA型 和 ABA型. 因此我们只需要枚举两种回文类型进行判断即可.贪心考虑到如果我们从前向后扫描, 如果此时出现了AA原创 2021-07-26 09:59:28 · 175 阅读 · 0 评论 -
Codeforces1538E Funny Substrings (字符串合并求贡献)
题目链接: Funny Substrings大致题意有n个操作, 询问执行完n个操作后, 最后的字符串中包含多少个"haha".操作有两种: 操作①: x := s 把字符串s赋值给变量x. 操作②: x = a + b 把变量x 修改为 变量a + 变量b, 其中两个变量相加表示两个字符串的拼接.解题思路字符串合并 (下文中没有前缀和一词, 想表达的意思均为 前缀 和 xxxxxx)首先我们明确一点, 如果字符串的长度只有1, 那么把这个字符串自我合并n次后, 长度可达2n. 因此直接原创 2021-06-16 10:32:04 · 172 阅读 · 0 评论 -
AC‘s String(字符串哈希线段树 + set + 乘法逆元)
题目链接: AC’s String大致题意给定n个字符串(作为模式串), 和一个匹配串. 有如下两种操作: ①询问匹配串[l, r]区间的子串是否是某个模式串. ②修改匹配串x位置, 使其位置的字符变为y.解题思路字符串哈希线段树 下面的思路不适合不了解字符串哈希方式, 以及不会线段树的同学食用如何判断两个字符串是否相等? 判断其哈希值是否相等即可.那么对于每一个匹配串的子串是否为某个模式串, 我们可以将所有模式串的哈希值放到一个集合set中, 每次判断当前子串的哈希值是否存在于集合中原创 2021-03-27 16:07:04 · 199 阅读 · 0 评论 -
Caesar Cipher(线段树 + 字符串哈希)
题目链接: Caesar Cipher大致题意给定一个非负整数序列, 有两种操作: 操作1: 将[l, r]区间所有数字+1, 操作2: 询问两个子序列区间是否相同.特别的: 对于每一个数字, 应该为[0, 65535]之间的整数(%65536).解题思路区间修改+区间查询+询问子序列是否相同 ==> 线段树 + 字符串哈希AC代码#include <bits/stdc++.h>#define rep(i, n) for (int i = 1; i <= (n); +原创 2020-11-13 20:25:09 · 171 阅读 · 0 评论 -
A Secret (KMP + 后缀和)
题目链接: A Secret大致题意:给出两个字符串, 统计串2的后缀子串在串1中的出现次数. 假设串2中后缀子串长度为i时在串1中出现x次, 则fact(s2, i) = i * x. 最终输出 fact(s2, i)的总和(1 <= i <= |s2|) .题目感觉不太好叙述, 麻烦自己看吧解题思路:对于字符串匹配, 我们很容易想到kmp, 但是kmp的匹配和这个题的思路有些不同, kmp是计算前缀, 而本题则是计算后缀. 所以我们不妨将s1与s2都进行翻转, 这样我们就可以得到k原创 2020-09-22 14:45:53 · 205 阅读 · 0 评论 -
ABB(马拉车)
题目连接: ABB题目:Fernando was hired by the University of Waterloo to finish a development project the university started some time ago. Outside the campus, the university wanted to build its representative bungalow street for important foreign visitors and co原创 2020-06-10 22:53:11 · 326 阅读 · 0 评论 -
Phoenix and Distribution
题目连接: Phoenix and Distribution大致题意:给你一个字符串s(长度为n), 需要把s分成k个非空串, 可以任意拆分字符串s. 要求: 得到的k个非空子串都尽可能小, 输出其中最大的那个.解题思路:本题的实质还是求最小的字符串.由于字符串的大小比较和数字不同, 如果串a比串b长, 我们并不能说a比b大, 而是要逐位进行比较的. 当比较到某位不相同时, 当前位大的字符串则大.所以很容易想到我们要把字符串s排序, 希望均分给每一个子串. 让每一个子串尽可能的平均.但是由于字原创 2020-05-10 17:05:41 · 216 阅读 · 1 评论 -
Homecoming
题目连接: Homecoming题目:题目太长了, 在这里就不再复制了, 大概分析一下就是一个找连续相同字符的问题.解题思路:这个题的字符串来表示车站, 只有A和B两种车站. 如果在A类车站上车, 那么途径的所有A车站(期间不能有B车站)我们都可以选择下车, 如果当我们遇到B车站时, 只能选择下车. B类车站上车同理.如题中举例: 对于串"AABBBAB", 我们从1开始标记, 到7为止...原创 2020-05-04 14:02:44 · 199 阅读 · 0 评论 -
HDU1106 排序(scanf进阶)
题目连接:题目:解题思路:AC代码:#include <bits/stdc++.h>#define ll long longusing namespace std;char a[2000]; char b[20];int num[1005];int main(void){ while (cin.getline(a, 2000)) { char *p = a; ...原创 2020-03-30 22:27:56 · 165 阅读 · 0 评论