51Nod1469 淋漓尽致子串

首先,我们来定义一下淋漓尽致子串。
1.令原串为S。
2.设子串的长度为len,在原串S中出现的次数为k,令其出现的位置为p1, p2, ....pk(即这个子串在原串中[pi,pi + len - 1]中出现)。
3.若k=1,则该子串不是淋漓尽致子串。
4.若存在pi,pj(i != j),使得S[pi - 1] = S[pj - 1],则该子串不是淋漓尽致子串。
5.若存在pi,pj(i != j),使得S[pi + len] = S[pj + len],则该字串不是淋漓尽致字串。
否则,该子串为淋漓尽致子串。
我想知道这个串有多少个本质不同的淋漓尽致子串。
数据范围:
|S| <= 100000
S由小写字母组成。
考虑用SAM,来分析一下题目中的条件
首先出现超过一次,即sz[i]>1
条件4,即满足在parent树上,没有一个i的儿子j满足sz[j]>1
条件5,满足在转移DAG上,没有一个儿子j满足sz[j]>1
于是每找到一个节点,就会为答案贡献1
#pragma GCC opitmize("O3")
#pragma G++ opitmize("O3")
#include<stdio.h>
#include<string.h>
#include<algorithm>
#define N 200010
using namespace std;
char str[N]; int ans=0;
int s[N][26],mx[N],sz[N],f[N];
int n,m,cnt=1,lst=1,v[N],r[N];
inline int extend(int c){int p=lst,np=lst=++cnt,q,nq;mx[np]=mx[p]+1; sz[np]=1;for(;!s[p][c];p=f[p]) s[p][c]=np;if(!p) return f[np]=1;q=s[p][c];if(mx[q]==mx[p]+1) f[np]=q;else{nq=++cnt;mx[nq]=mx[p]+1;f[nq]=f[q]; f[q]=f[np]=nq;memcpy(s[nq],s[q],26<<2);for(;p&&s[p][c]==q;p=f[p]) s[p][c]=nq;}
}
int main(){scanf("%s",str+1); n=strlen(str+1);for(int i=1;i<=n;++i) extend(str[i]-'a');for(int i=1;i<=cnt;++i) ++v[mx[i]];for(int i=1;i<=n;++i) v[i]+=v[i-1];for(int i=cnt;i;--i) r[v[mx[i]]--]=i;for(int i=cnt;i;--i) sz[f[r[i]]]+=sz[r[i]];memset(v,*sz=0,sizeof v);for(int p,i=cnt;i;--i){p=r[i];if(sz[p]>1) v[f[p]]=1;if(sz[p]==1) v[p]=1; else for(int c=0;c<26;++c)if(sz[s[p][c]]>1){ v[p]=1; break; }}for(int i=cnt;i;--i) ans+=!v[i];printf("%d\n",ans);
}

转载于:https://www.cnblogs.com/Extended-Ash/p/9477134.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/267622.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android运行Socket项目时出现错误 Error: ShouldNotReachHere()

在Android项目中实现Socket通信&#xff0c;服务器端使用main方法创建ServerSocket&#xff0c;运行启动服务器时报错“Error: ShouldNotReachHere() ”。 原因分析&#xff1a;java中使用main函数作为应用程序的接口&#xff0c;class的生命周期始于main方法&#xff0c;终于m…

腾讯测试鸿蒙系统,爆料:荣耀 30 Pro已开始测试华为鸿蒙系统

某数码博主今日放出了一张华为内部关于荣耀 30 Pro 测试 HarmonyOS 的截图&#xff0c;图片显示该机正运行基于 HarmonyOS 2.0 开发者测试版的系统。此外&#xff0c;他还透露荣耀 30 系列、V30 系列、Play4 Pro 下个月将升级到华为鸿蒙系统。华为在 2019 年开发者大会上正式推…

程序员跳槽全攻略pdf

下载地址&#xff1a;网盘下载和那些职场鸡汤不同&#xff0c;本书从价值论开始&#xff0c;引入职业画布&#xff0c;从九大方面为你讲解&#xff1b;有分析数据、有简历模板、有书写工具、有技能树图&#xff0c;堪称一本公司老板和HR最害怕你看到的跳槽百科。作者Easy为互联…

数字阅读体验的平台距离我们还有多远?

随着互联网的兴起&#xff0c;越来越多原本基于传统载体的信息内容也正在发生巨大的转变&#xff0c;当电子书和智能手机等载体开始承担阅读方式的时候&#xff0c;数字阅读的时代也正在全面来临。从近年来逐渐兴起的各种终端设备载体的发展历程来看&#xff0c;这个时代的来临…

使用MapReduce将HDFS数据导入Mysql

使用MapReduce将Mysql数据导入HDFS代码链接 将HDFS数据导入Mysql,代码示例 package com.zhen.mysqlToHDFS;import java.io.DataInput; import java.io.DataOutput; import java.io.IOException; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sq…

html多行文本框下拉,html基础-表单控件、密码框、单选按钮、复选框、多行文本框、下拉列表、按钮(提交、图片、重置)...

表单的介绍(将前端页面表单的值发送给后台&#xff0c;后台通过表单中name属性取值)可以获取客户端的信息(数据)&#xff0c;表单有各种各样的控件&#xff0c;输入框&#xff0c;复选框 按钮等表单的功能&#xff1a;交互功能表单的工作原理&#xff1a;浏览有表单的页面&…

Lync Server 2010的部署系列_第七章 部署边缘服务器(上)

一、配置边缘支持的内部DNS记录 1) 登录DC.Gianthard.com&#xff08;192.168.1.11&#xff09;。在相应的 DNS 服务器上&#xff0c;依次单击“开始”、“控制面板”、“管理工具”&#xff0c;然后单击“DNS”。 2) 在 SIP 域的控制台树中&#xff0c;展开“正向查找区域”&a…

iOS扩大按钮的点击范围

// 重写此方法将按钮的点击范围扩大 - (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event {CGRect bounds self.bounds;// 扩大点击区域bounds CGRectInset(bounds, -20, -20);// 若点击的点在新的bounds里面。就返回yesreturn CGRectContainsPoint(bounds, poin…

html5 txt文件上传,JavaScript html5利用FileReader实现上传功能

本文实例为大家分享了H5利用FileReader上传文件的具体代码&#xff0c;供大家参考&#xff0c;具体内容如下1. Html部分文件上传演练Browse...2. JS部分var result document.getElementById("result");var input document.getElementById("file_input");…

判断标签是否出界,重新设置样式

//样式重置&#xff0c;因为会获取到上次设置的样式 $(#releaseData).css({ "height": "auto", "bottom": "auto" }); //获取底部位置 var bottom$("#releaseData").css("bottom"); if (bottom.toString().indexO…

一起谈.NET技术,ASP.NET 请求处理流程

HTTP处理流程图 以上流程的一些概念解释&#xff1a; 1.http.sys 是一个位于Win2003和WinXP SP2中的操作系统核心组件&#xff0c;能够让任何应用程序通过它提供的接口&#xff0c;以http协议进行信息通讯。 温馨提示&#xff1a;如果用户不慎删除了该驱动文件&#xff0c;不用…

链接在HTML的英文,英文:A链接标记ie下会自动补全href_HTML/Xhtml_网页制作

英文:A链接标记ie下会自动补全href.Whilst working on the Ajax Link Tracker and MapSurface I have come across an inconsistency in how the href attribute is retrieved using DOM Scripting.The href attribute is different to other element attributes in that the v…

python实现文件加密

前言&#xff1a; 想实现批量文件加密&#xff0c;可惜批量。展时没有思路 0x1 没有加密前的图片 加密后&#xff01;&#xff01;&#xff01; &#xff01;&#xff01;&#xff01;打不开了 0x02: 代码 import hashlibdef get_sha1(f):xdopen(E:/1.txt,rb).read() #以读二进…

教徒计划出品:升级ESXI41-ESXI5

这个文档是教徒计划“教徒第一期”学员做的升级ESX41到ESXI5的资料&#xff0c;以后教徒计划学员做的资料共享时&#xff0c;我都会打上“教徒计划出品”字样&#xff0c;这样有别于“现任明教教主”出品。这样能够确认是谁主导做的这个事情。“教徒计划”这个平台能够给安全CC…

html是以一种通用的方法来,c++ 有一种通用的方法来使函数模板适应为多态函数对象吗?...

我有一些功能模板,例如template void foo(T);template void bar(T);// others我需要将每一个传递给一种算法,它将被称为各种类型的算法.template void some_algorithm(F f){// call f with argument of type int// call f with argument of type SomeClass// etc.}我不能传递我…

百度2011大会见闻:百度开始推出耀主页

9月2号是百度大会的日子&#xff0c;之前通过51CTO注册&#xff0c;获得了参会资格&#xff0c;感谢51CTO带来的机会&#xff0c;可以有幸到现场观看到百度总裁李彦宏的精彩演讲。<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />…

asp.net core中使用log4net

和之前的ASP.NET MVC中的使用LOG4NET的方法有些不同&#xff0c;这里先记录一下&#xff0c;使用步骤如下 &#xff1a; 1. 建立 ASP.NET CORE项目中&#xff0c;NUGET中搜索log4net后下载安装 2. 根目录建立 log4net.config文件&#xff0c;内容如下&#xff1a; <?xml ve…

2013电大计算机应用基础试题及答案,[2017年电大]电大2013年计算机应用基础试题及答案[呕心沥血整理].doc...

[2017年电大]电大2013年计算机应用基础试题及答案[呕心沥血整理]计算机应用基础复习资料一、单选题1、当前的计算机一般被认为是第四代计算机&#xff0c;它所采用的逻辑元件是______。答案&#xff1a; DA&#xff1a;晶体管 B&#xff1a;集成电路 C&#xff1a;电子管 D&…

由于远程桌面服务当前正忙|VDI无法连接

VDI 无法连接&#xff0c;“由于远程桌面服务当前正忙”。Win2008 R2 DC RDVH RDCB RDWA &#xff0c;然后为用户demo配置了个人虚拟机&#xff08;XP SP3&#xff09;&#xff0c;当用户登录rdwa.abc.com/rdweb &#xff0c;访问“我的桌面”时一段时间后报错 “由于远程桌…

寒假作业01

1.对大一上学期的总结&#xff1a; 用一句很经典的话来说&#xff0c;大学生活与高中生活不同就在于高中忙着做作业是为了有时间去做其他的事&#xff0c;而在大学&#xff0c;得忙着做完其他事情才有时间去做作业。因为不仅要处理好学习内的事情&#xff0c;还要花心思在课余活…