Codeforces Round #246 (Div. 2)——D题
KMP算法,没写出来,完全不理解NEXT数组。现在理解了很多
答案都在程序中
,不过这个思想真的很神奇,
还有毛语不好,一直没看懂题目,现在懂了,
大概是:S中前缀等于后缀,求其长度,和其在S中出现了几次,
KMP可以直接求出各个长度,但是求次数真的真的很神奇:
/*
CJT:第一份KMP算法,呜呜
我的理解:先求出next数组,next 数组的含义是:可以跳过的
个数,也是前缀的数
先求出tot,答案数,
然后求数组中有多少个可以substring
因为nexts是关于求对称的个数,所以
可以用来后面的求个数 */
#include<stdio.h>
#include<math.h>
#include<string.h>
#include<algorithm>
#include<string>
#include<iostream>
using namespace std;
string s;
int vis[],tot;
int ans[],next[]; void kmp()
{
int k=-,i=;
next[]=-;
while (i<s.size())
{
if (k==-||s[i]==s[k])
{
++k,++i;
next[i]=k;
}
else k=next[k];
}
} int main()
{
cin>>s;
kmp();
int l=s.size();
int id=l;
while (id)
{
++tot;
vis[id]=;
id=next[id];
}
for (int i=;i<=l;i++) ans[i]=;
for (int i=l;i>=;i--)
ans[next[i]]+=ans[i];//这里很难写
cout<<tot<<endl;
for (int i=;i<=l;i++)
if (vis[i]) cout<<i<<" "<<ans[i]<<endl;
return ;
}
Codeforces Round #246 (Div. 2)——D题的更多相关文章
- Codeforces Round #246 (Div. 2) D. Prefixes and Suffixes
		
D. Prefixes and Suffixes You have a string s = s ...
 - Codeforces Round #378 (Div. 2) D题(data structure)解题报告
		
题目地址 先简单的总结一下这次CF,前两道题非常的水,可是第一题又是因为自己想的不够周到而被Hack了一次(或许也应该感谢这个hack我的人,使我没有最后在赛后测试中WA).做到C题时看到题目情况非常 ...
 - Codeforces Round #246 (Div. 2)
		
题目链接:Codeforces Round #246 (Div. 2) A:直接找满足的人数,然后整除3就是答案 B:开一个vis数组记录每一个衣服的主场和客场出现次数.然后输出的时候主场数量加上反复 ...
 - Codeforces Round #612 (Div. 2) 前四题题解
		
这场比赛的出题人挺有意思,全部magic成了青色. 还有题目中的图片特别有趣. 晚上没打,开virtual contest打的,就会前三道,我太菜了. 最后看着题解补了第四道. 比赛传送门 A. An ...
 - Codeforces Round #713 (Div. 3)AB题
		
Codeforces Round #713 (Div. 3) Editorial 记录一下自己写的前二题本人比较菜 A. Spy Detected! You are given an array a ...
 - Codeforces Round #552 (Div. 3) A题
		
题目网址:http://codeforces.com/contest/1154/problem/ 题目意思:就是给你四个数,这四个数是a+b,a+c,b+c,a+b+c,次序未知要反求出a,b,c,d ...
 - Codeforces Round #412  Div. 2 补题 D. Dynamic Problem Scoring
		
D. Dynamic Problem Scoring time limit per test 2 seconds memory limit per test 256 megabytes input s ...
 - Codeforces Round #271 (Div. 2) E题 Pillars(线段树维护DP)
		
题目地址:http://codeforces.com/contest/474/problem/E 第一次遇到这样的用线段树来维护DP的题目.ASC中也遇到过,当时也非常自然的想到了线段树维护DP,可是 ...
 - Codeforces Round #425 (Div. 2))——A题&&B题&&D题
		
A. Sasha and Sticks 题目链接:http://codeforces.com/contest/832/problem/A 题目意思:n个棍,双方每次取k个,取得多次数的人获胜,Sash ...
 
随机推荐
- Android中style的使用
			
摘自搜搜问问. <item name="#1">#2</item> 1.item 的name属性#1可以为所有系统所带组件的属性,#2为此属性的值如andr ...
 - Delphi CxGrid 汇总(3)
			
列 解决: <aColumn>.GroupIndex := -1; <aColumn>.Visible := True; *** ...
 - ORM之Dapper操作Sql Server和MySql数据库
			
1.为什么选择Dapper 1)轻量. 2)速度快.Dapper的速度接近与IDataReader,取列表的数据超过了DataTable. 3)支持多种数据库.Dapper可以在所有Ado.net P ...
 - 实战Django:官方实例Part5
			
俗话说,人非圣贤,孰能无过.在堆代码的过程中,即便是老攻城狮,也会写下一些错误的内容.俗话又说,过而能改,善莫大焉.要改,首先要知道哪里存在错误,这便是我们要对投票应用进行测试的原因. 21.撰写 ...
 - Express实现http和https服务
			
一.介绍Http与Https 概念 HTTP: 超文本传输协议(Hypertext transfer protocol) 是一种详细规定了浏览器和万维网服务器之间互相通信的规则,通过因特网传送万维网文 ...
 - jdbc 连接 oracle rac
			
jdbc 连接 oracle rac 的连接串如下: jdbc:oracle:thin:@(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 192. ...
 - Ubuntu下sqlite3的安装及使用
			
Sqlite是一款轻型的数据库,实现了多数SQL-92标准,包括事务(原子性,一致性,隔离性和持久性 ACID),触发器与多数复杂查询.对于一个移动手持设备的应用开发者,Sqlite是居家旅行必备数据 ...
 - [Environment Build] Maven环境配置
			
1. 下载并解压maven文件 2. 在环境变量中配置一个JAVA_HOME的变量,指向你本地的JDK 3. 在系统变量中新建一个名为:MAVEN_HOME的变量,指向你的maven解压文件的bin目 ...
 - Linux如何开机自动运行自己的脚本
			
博客分类: LINUX 脚本LinuxCentOSWindowsBash 记录这个事情是上次完成之后,今天要新加一个文件夹,一时之间忘记以前怎么做了,因为有几种方法,起码我知道三种方法,这里 ...
 - Oracle 11gR2 Database和Active Data Guard迁移案例
			
客户一套核心系统由一台Oracle Database 11.2.0.3.4单机和一台Active Data Guard组成,分别运行在两台PC服务器上,Oracle Linux 5.8 x86_64b ...