HUST 1328 String

11:

KMP next 的强大

题意求前缀在S中出现的次数之和

next[j] 表示 S[0....NEXT[J]]==S[J-NEXT[J].....J];

于是我们得到。。后加入一个字符所得到新的前缀会多ADD[next[J]]个

#include<stdio.h>

#include<string.h>

#include<algorithm>

#include<iostream>

#include<math.h>

using namespace std;

#define mod 1000000007

typedef long long ll;

#define N 123456

char s[N];

int next[N];

int n;

ll a[N];

void kmp()

{

n=strlen(s);

int i=0,j=-1;

next[0]=-1;

while (i<n)

{

if (j==-1||s[i]==s[j])

{

i++;

j++;

next[i]=j;

}else j=next[j];

}

}

int main()

{

while (scanf("%s",s)!=EOF)

{

kmp();

ll ans=0;

memset(a,0,sizeof(a));

for (int i=1;i<=n;i++)

{

a[i]=a[next[i]];

a[i]++;

ans+=a[i];

}

printf("%lld\n",ans);

}

return 0;

}

时间: 2024-12-26 10:04:47

HUST 1328 String的相关文章

插件实例修改

前端框架是easyui框架,后台的框架是我们公司自己写的.做的功能主要是插件修改,使用easyui iframe, tab,datagrid组件 配置文件 <?xml version="1.0" encoding="UTF-8"?> <xp-web> <modules> <!-- 第三方APP服务端 --> <module path="/web/plugins/bs/yygl/bz/extapp&quo

hust 1075 Every String Left Behind

题目描述 Elenore has a list of strings that she wants to put in a file. She could just put them all into a file in order, but she wants to minimize the size of the file. So she figures she can combine all the strings into one large string which contains

HUST 1698 - 电影院 组合数学 + 分类思想

http://acm.hust.edu.cn/problem/show/1698 题目就是要把一个数n分成4段,其中中间两段一定要是奇数. 问有多少种情况. 分类, 奇数 + 奇数 + 奇数 + 奇数 奇数 + 奇数 + 奇数 + 偶数 偶数 + 奇数 + 奇数 + 奇数 偶数 + 奇数 + 奇数 + 偶数 然后奇数表达成 2 * a - 1这个样子,就能列出方程. 然后就是类似于解a1 + a2 + a3 + a4 = x的问题了. #include <cstdio> #include &l

HUST 1017 - Exact cover (Dancing Links 模板题)

1017 - Exact cover 时间限制:15秒 内存限制:128兆 自定评测 5584 次提交 2975 次通过 题目描述 There is an N*M matrix with only 0s and 1s, (1 <= N,M <= 1000). An exact cover is a selection of rows such that every column has a 1 in exactly one of the selected rows. Try to find o

string黑科技

1. string对象的定义和初始化以及读写 string s1; 默认构造函数,s1为空串string s2(s1); 将s2初始化为s1的一个副本string s3("valuee"); 将s3初始化一个字符串面值副本string s4(n,'c'); 将s4 初始化为字符'c'的n个副本cin>>s5; 读取有效字符到遇到空格getline(cin,s6); 读取字符到遇到换行,空格可读入,遇'\n'结束getline(cin,s7,'a'); 遇'a'结束,其中任何

HUST 1341 A - A Simple Task(哈理工 亚洲区选拔赛练习赛)

A - A Simple Task Time Limit:1000MS    Memory Limit:131072KB    64bit IO Format:%lld & %llu SubmitStatusPracticeHUST 1341 Description As is known to all, lots of birds are living in HUST. A bird has s units of food on the first day, and eats k units

csuoj 1328: 近似回文词

http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1328 1328: 近似回文词 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 355  Solved: 138 [Submit][Status][Web Board] Description 输入一行文本,输出最长近似回文词连续子串.所谓近似回文词是指满足以下条件的字符串: 1. S以字母开头,字母结尾 2. a(S)和b(S)最多有2k个位置不同

hust 1589 找出子串

题目描述 给定一个字符串s ,求出一个子串t,满足如下性质:1.       t是s的一个前缀.2.       t是s的一个后缀.3.       t出现在s的中间(并非前缀和后缀).例如:字符串s为fixprefixsuffix,t可以是fix.字符串s为aaa,t可以是aa.输入 输入包括多组数据,每组数据为一行,每行有一个字符串s,其长度不超过10^6(一百万). 输出 每组数据输出一行,每行为一个字符串t,若不存在字符串t,则输出"Just a legend"(不包括引号).

ECNU 1328 Stripes (sg函数)

看了张一飞大神的论文,开始找题做,上面提到的一个就是ecnu上的题 链接:http://www.acm.cs.ecnu.edu.cn/problem.php?problemid=1328 题目大意:给定red.green.blue三种长度分别为c.z.n的矩形条纹,要求用这三种矩形条纹来cover大小为p x 1的game board,第一个不能再cover的选手为输.问先手是否能赢. 又有一种说法: 题意:其实就是给你L颗石子,你可以取连续的C颗石子,或者连续的Z颗石子,或者连续的N颗石子,谁