jzoj4669-[NOIP2016提高A组模拟7.19]弄提纲【LCA,KMP,字符串】

正题


题目大意

一个字符串SSS,给出若干个l,rl,rl,r
SSSlllrrr结尾的前缀一个公共后缀且它是SSS的前缀的子串。
求有多少和最长的那个的长度


解题思路

首先后缀前缀很容易想到KMPKMPKMP,我们先处理出nextnextnext数组
然后从(l,r)(l,r)(l,r)开始让lllrrr跳到它们的nextnextnext的位置知道两个相等就好了

但是这样会TTT飞,那么我们发现可以将问题转换
每次将(nexti,i)(next_i,i)(nexti,i)连边,就变成了一棵树,然后求LCALCALCA和它的深度就好了


codecodecode

#include<cstdio>
#include<algorithm>
#include<cstring>
#include<queue>
#include<cmath>
#define N 31000
using namespace std;
struct line{int to,next,w;
}a[N*5];
int tot,n,m,x,y,ls[N],dep[N],f[N][30],dis[N][30],t,next[N];
char s[N];
queue<int> q;
inline int readn()
{int X=0,w=0; char c=0;while(c<'0'||c>'9') {w|=c=='-';c=getchar();}while(c>='0'&&c<='9') X=(X<<3)+(X<<1)+(c^48),c=getchar();return w?-X:X;
}
inline void addl(int x,int y,int w)
{a[++tot].to=y;a[tot].next=ls[x];a[tot].w=w;ls[x]=tot;
}
inline void bfs(int s)
{q.push(s);dep[s]=1;while(!q.empty()){int x=q.front();q.pop();for (int i=ls[x];i;i=a[i].next){int y=a[i].to;if (dep[y]) continue;q.push(y);f[y][0]=x;dep[y]=dep[x]+1;dis[y][0]=a[i].w;}}t=(int)(log(n)/log(2))+1;for (int j=1;j<=t;j++){for (int i=0;i<=n;i++){f[i][j]=f[f[i][j-1]][j-1];dis[i][j]=min(dis[i][j-1],dis[f[i][j-1]][j-1]);}}
}
inline int LCA(int x,int y)
{if (dep[x]>dep[y]) swap(x,y);for (int i=t;i>=0;i--)if (dep[f[y][i]]>=dep[x]) y=f[y][i];if (x==y) return x;for (int i=t;i>=0;i--)if (f[y][i]!=f[x][i]) {x=f[x][i];y=f[y][i];}return f[x][0];
}
void Kmp_build()
{for(int i=2,j=0;i<=n;i++){while(j&&(s[i]!=s[j+1])) j=next[j];j+=(s[i]==s[j+1]);next[i]=j;}for(int i=1;i<=n;i++)addl(next[i],i,1);
}
int main()
{scanf("%s",s+1);n=strlen(s+1);Kmp_build();bfs(0);scanf("%d",&m);for(int i=1;i<=m;i++){int l,r,ans;scanf("%d%d",&l,&r);ans=LCA(l,r);printf("%d %d\n",dep[ans]-1,ans);}
}

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

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

相关文章

(七)HTML和CSS 、JavaScript 和Java到底有什么区别,今天终于明白了!!!

有人曾经问过&#xff0c;“HTML CSS 和 JavaScript 以及 Java有什么区别” TCP VS UDP Java VS C 功能先上了再说 高级开发人员作为一个团队进行编程 调试CSS 高级开发人员重构代码 能一个手指完成的绝不用两只手 看实习生编码的时候&#xff0c;我的表情…… 当我尝试进入B…

Spark入门(十五)之分组求最小值

一、分组求最小值 计算文本里面的每个key分组求最小值&#xff0c;输出结果。 二、maven设置 <?xml version"1.0" encoding"UTF-8"?><project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XM…

基于Accord.Audio和百度语言识别

目标需求使用录音形式&#xff0c;模拟微信语音聊天。按住录音&#xff0c;松开发送语音&#xff0c;并完成语音识别。ps&#xff1a;百度的语言识别有60秒长度限制&#xff0c;需要自己做好控制。实现方案采用C# winform 程序实现桌面版&#xff0c;采用Accord 实现语音录制停…

欢乐纪中A组周六赛【2019.5.18】

前言 重返纪中之日&#xff0c;又是被虐之时 成绩 JJJ表示初中&#xff0c;HHH表示高中后面加的是几年级 RankRankRankPersonPersonPersonScoreScoreScoreAAABBBCCC666(H−1)HJW(H-1)HJW(H−1)HJW191191191100100100919191000999(J−2)WYC(J-2)WYC(J−2)WYC151151151606060909…

Spark入门(十六)之分组求TOP N最小值

一、分组求TOP N最小值 计算文本里面的每个key分组求TOP N最小值&#xff0c;输出结果。 二、maven设置 <?xml version"1.0" encoding"UTF-8"?><project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.o…

(八)Spring与MyBatis整合

持久层 目录 Mybatis 开发步骤回顾Mybatis 开发中存在的问题Spring 与 Mybatis 整合思路Spring 与 Mybatis 整合的开发步骤Spring 与 Mybatis 整合的编码搭建开发环境 pom.xmlSpring 配置文件的配置编码Spring 与 Mybatis 整合细节持久层整合总述 1、Spring 框架为什么要与持…

Git 企业开发者教程

为什么要写这样一个面向企业开发者的Git教程&#xff1f;这个问题也困扰我自己很久。其实我使用git的时间也不短了&#xff0c;但是就和正在阅读本文的每一位一样&#xff0c;常用的基本就是那么几个(git clone, git push)等等。然而git其实有着非常强大的功能&#xff0c;如果…

P1169-[ZJOI2007]棋盘制作【贪心】

正题 题目链接:https://www.luogu.org/problemnew/show/P1169 题目大意 一个矩阵中求一个最大的子矩阵和子正方形使得它们其中都是01交错。 解题思路 lefti,jleft_{i,j}lefti,j​表示(i,j)(i,j)(i,j)往左扩展多远&#xff0c;righti,jright_{i,j}righti,j​表示(i,j)(i,j)(i,…

(九)Spring 事务开发、事务属性详解

持久层 目录 事务回顾Spring 控制事务的开发Spring 中的事务属性&#xff08;Transaction Attribute&#xff09;隔离属性&#xff08;ISOLATION&#xff09;传播属性&#xff08;PROPAGATION&#xff09;只读属性&#xff08;readOnly&#xff09;超时属性&#xff08;timeo…

基于百度理解与交互技术实现机器问答

一、前言我们都知道现在聊天对话机器是一个很有意思的东西&#xff0c;比如说苹果siri&#xff0c;比如说微软的小冰。聊天对话机器的应用场景也很广泛&#xff0c;比如说&#xff1a;银行的自助办卡机器人、展会讲解解说等等。我们对机器人说句话&#xff0c;机器人从听取&…

Spark入门(十七)之单表关联

一、单表关联 给出child-parent&#xff08;孩子——父母&#xff09;表&#xff0c;要求输出grandchild-grandparent&#xff08;孙子——祖父母&#xff09;表 二、maven设置 <?xml version"1.0" encoding"UTF-8"?><project xmlns"htt…

P3514-[POI2011]LIZ-Lollipop【思路题】

正题 题目链接:https://www.luogu.org/problemnew/show/P3514 题目大意 一个12序列&#xff0c;若干个询问求有没有一个子串之和为kkk 解题思路 首先感谢ZYCdalaoZYCdalaoZYCdalao的温馨提示。 然后进入正题 首先我们考虑一个串的和为kkk 那么最边的数的情况(1,1),(1,2),(2…

(十)Spring 与 MVC 框架整合

Spring 整合 MVC 目录 MVC 框架整合思想为什么要整合 MVC 框架搭建 Web 运行环境Spring 整合 MVC 框架的核心思路1. 准备工厂2. 代码整合Spring 整合 Struts2MVC 框架整合思想 为什么要整合 MVC 框架 MVC 框架提供了控制器&#xff08;Controller&#xff09;调用 Servlet …

Spark入门(十八)之多表关联

一、多表关联 输入是两个文件&#xff0c;一个代表工厂表&#xff0c;包含工厂名列和地址编号列&#xff1b;另一个代表地址表&#xff0c;包含地址名列和地址编号列。要求从输入数据中找出工厂名和地址名的对应关系&#xff0c;输出"工厂名——地址名"表 二、maven…

利用VSTS跟Kubernetes整合进行CI/CD

为什么VSTS要搭配Kubernetes&#xff1f;通常我们在开发管理软件项目的时候都会碰到一个很头痛的问题&#xff0c;就是开发、测试、生产环境不一致&#xff0c;导致开发人员和测试人员甚至和运维吵架。因为常见的物理环境甚至云环境中&#xff0c;这些部署环境都是由运维人员提…

P3112-[USACO14DEC]后卫马克Guard Mark【贪心】

正题 题目链接:https://www.luogu.org/problemnew/show/P3112 题目大意 有nnn只牛&#xff0c;每只牛有hi,wi,sih_i,w_i,s_ihi​,wi​,si​分别表示有多高&#xff0c;有多重&#xff0c;上面最多承载总共多重的牛。 选择一些牛依次摆放要求高度超过TTT且上面还能增加最重的物…

(十一)Spring 基础注解(对象创建相关注解、注入相关注解)

注解编程 目录 注解基础概念注解的作用Spring 注解的发展历程Spring 基础注解&#xff08;Spring 2.x&#xff09;对象创建相关注解ComponentRepository、Service、ContollerScopeLazy生命周期注解 PostConstruct、PreDestroy注入相关注解用户自定义类型 AutowiredJDK 类型注…

Spark Streaming之统计socket单词数

一、统计socket单词数 侦听TCP套接字的数据服务器接收到的文本数据中的单词数。 二、maven配置 <?xml version"1.0" encoding"UTF-8"?><project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/…

使用 ASP.NET Core, Entity Framework Core 和 ABP 创建N层Web应用 第二篇

介绍这是“使用 ASP.NET Core &#xff0c;Entity Framework Core 和 ASP.NET Boilerplate 创建N层 Web 应用”系列文章的第二篇。以下可以看其他篇目&#xff1a;使用 ASP.NET Core &#xff0c;Entity Framework Core 和 ASP.NET Boilerplate 创建N层 Web 应用 第一篇 &…

jzoj4786-[NOIP2016提高A组模拟9.17]小a的强迫症【数论】

正题 题目大意 nnn个颜色第iii个个数为numinum_inumi​个&#xff0c;然后要求第iii种颜色的最后一个一定在第i1i1i1种的最后一个前面。求方案总数。 解题思路 首先先定义一个1∼n1\sim n1∼n的序列&#xff0c;然后依次将剩下的数插入。 第iii个颜色有z(∑j1i−1numj)1z(\su…