
字符串
克莉丝汀娜
此时一名自称平民的玩家路过
展开
-
hdu 5198 Strange Class
判断所给字符串是否是由三个字母构成,要求三个字母个数相等且连续。先判断字符串长度是否为3的倍数,然后取三段中的字符各一个,看是否相同,再依次判断各段字母是否连续。#include#include#include#include#include#includeusing namespace std;#define LL long longchar s[15];int原创 2015-04-04 22:50:29 · 457 阅读 · 0 评论 -
uva 11732 "strcmp()" Anyone?(字典树)
给n个字符串,问两两比较字典序大小,总共所需比较次数。将所有字符串依次插入字典树里面。记val[i]表示经过结点i的字符串数目,End[i]表示以结点i结尾的字符串数目。则每次插入时,可以知道当前结点已经经过的字符串数目,结果累加2*val[i],到最后一个结点时,累加之前以当前结点结尾的字符串数目。注意,一开始插入的时候需要比较s[0]和t[0],即一开始两个字符串就存在原创 2015-09-18 12:42:49 · 346 阅读 · 0 评论 -
hdu 5442 Favorite Donut (最大表示法+KMP)
题目大意:给一个字符串,求它的循环最大表示开始位置,以及方向。1、可用最大表示法求出顺时针的最大表示的最小开始位置,记为p1。利用该位置求出顺时针的最大表示字符串,记为s12、然后将字符串倒置,再用一次最大表示法。注意此时求出来的位置p其实是下标最大的开始位置p2,即p2=n-(p+1)+1。但可利用该位置求出逆时针的最大表示字符串,记为s23、将倒置的字符串扩充至2倍长度,利用KM原创 2015-09-15 09:02:17 · 693 阅读 · 1 评论 -
uvalive 3942 Remember the Word (字典树+DP)
给S个不同的单词和一个长字符串,问将其分解为若干个单词有多少种方法(单词可重复使用)解法:设dp[i]表示以i开头的字符串分解的方法数。状态转移方程:dp[i]=sum(dp[i+len(x)]),x为S[i……L]的前缀。将每一个单词插入到字典树中,然后考虑长字符串S的每一个后缀s[i……L], 看其前缀x是否在字典树中出现,每出现一次,dp[i]累加dp[i+len(x原创 2015-09-12 21:35:07 · 548 阅读 · 0 评论 -
CCF 201409-3 字符串匹配 (KMP)
问题描述 给出一个字符串和多行文字,在这些文字中找到字符串出现的那些行。你的程序还需支持大小写敏感选项:当选项打开时,表示同一个字母的大写和小写看作不同的字符;当选项关闭时,表示同一个字母的大写和小写看作相同的字符。输入格式 输入的第一行包含一个字符串S,由大小写英文字母组成。 第二行包含一个数字,表示大小写敏感的选项,当数字为0时表示大小写不敏感,当数字为1时表示大小写敏感原创 2015-09-05 18:23:17 · 666 阅读 · 0 评论 -
hdu 5371 Hotaru's problem (Manacher算法)
给n个数,求满足条件的子串的最长长度。条件:整个数字串可分为三段,前两段和后两段均为回文串。解法:先用manacher算法求出各个位置为中心的回文长度,然后分别枚举前两段和后两段的对称中心,得到长度的三分之一。由于manacher算法求出来的每个中心的回文长度是最长的,因此只要有后两段的回文串的最长回文半径大于等于所枚举的长度,就可以更新答案。时间复杂度为O(n)原创 2015-08-14 11:06:40 · 280 阅读 · 0 评论 -
hdu 5384 Danganronpa (字典树/AC自动机)
给出若干仅由小写字母构成的A串、B串,问对于每一个A串,所有的B串在该串中出现的次数。标程是用AC自动机做的。蒟蒻暂时还不太会AC自动机。然后看到有用字典树直接做的,就学习了一下。求B在A中总共出现的次数,其实就是求A的所有子串中含有B的个数。而一个串的所有子串可以表示为它所有后缀的前缀。因此,可以把B[i]插入字典树中,对于每一个A[i],查询它的每一个后缀的所有前缀在字原创 2015-08-13 22:36:11 · 470 阅读 · 0 评论 -
5B Center Alignment(字符串处理)
题目大意:给一段文本,将其居中。当不能恰好居中时,先靠左居中,下一行靠右居中。脑残WA了好几发。#includeusing namespace std;char s[1001][1005];int len;int main(){ int cnt=0,i,j; while(fgets(s[cnt],sizeof(s[cnt]),stdin)) {原创 2015-04-03 20:42:58 · 568 阅读 · 0 评论 -
uvalive 3026 Period (前缀最短循环节)
给一个长度为n的字符串S,求其每一个前缀的最短循环节(若存在)对于串S,利用KMP算法求一下Next数组根据next数组的含义,设当前前缀长度为i,若这i个字符组成周期串,则i-next[i]恰好为其周期串的最长长度。#include#include#include#include#includetypedef long long LL;using name原创 2015-09-18 19:12:33 · 481 阅读 · 0 评论