CF873F 【Forbidden Indices】
还有这么板子的题?
和你谷上后缀自动机的板子基本一样,区别就是之后这个位置是\(0\)才计入贡献
代码
#include<iostream>
#include<cstdio>
#define maxn 400005
#define re register
#define LL long long
#define max(a,b) ((a)>(b)?(a):(b))
char S[maxn>>1],T[maxn>>1];
int n,lst=1,cnt=1;LL ans;
int fa[maxn],len[maxn],sz[maxn],tax[maxn],a[maxn],son[maxn][26];
inline void ins(int c,int o) {
int p=++cnt,f=lst; lst=p;
len[p]=len[f]+1,sz[p]=o;
while(f&&!son[f][c]) son[f][c]=p,f=fa[f];
if(!f) {fa[p]=1;return;}
int x=son[f][c];
if(len[f]+1==len[x]) {fa[p]=x;return;}
int y=++cnt;
len[y]=len[f]+1,fa[y]=fa[x],fa[x]=fa[p]=y;
for(re int i=0;i<26;i++) son[y][i]=son[x][i];
while(f&&son[f][c]==x) son[f][c]=y,f=fa[f];
}
int main()
{
scanf("%d",&n);scanf("%s",S+1),scanf("%s",T+1);
for(re int i=1;i<=n;i++) ins(S[i]-'a',int(T[i]-'0')^1);
for(re int i=1;i<=cnt;i++) tax[len[i]]++;
for(re int i=1;i<=n;i++) tax[i]+=tax[i-1];
for(re int i=1;i<=cnt;i++) a[tax[len[i]]--]=i;
for(re int i=cnt;i;i--) sz[fa[a[i]]]+=sz[a[i]];
for(re int i=1;i<=cnt;i++) ans=max(ans,(LL)sz[i]*(LL)len[i]);
std::cout<<ans;
return 0;
}
CF873F 【Forbidden Indices】的更多相关文章
- 【CF873F】Forbidden Indices 后缀自动机
[CF873F]Forbidden Indices 题意:给你一个串s,其中一些位置是危险的.定义一个子串的出现次数为:它的所有出现位置中,不是危险位置的个数.求s的所有子串中,长度*出现次数的最大值 ...
- 【hdu 3987】Harry Potter and the Forbidden Forest
[Link]:http://acm.hdu.edu.cn/showproblem.php?pid=3987 [Description] 给出一张有n个点的图,有的边又向,有的边无向,现在要你破坏一些路 ...
- Python开发【第二章】:Python的数据类型
基本数据类型 一.整型 如: 18.73.84 整型具备如下功能: class int(object): """ int(x=0) -> int or long i ...
- Python开发【第一篇】Python基础之自定义模块和内置模块
为什么要有模块,将代码归类.模块,用一砣代码实现了某个功能的代码集合. Python中叫模块,其他语言叫类库. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代 ...
- 【渗透课程】第二篇下-HTTP协议的请求与响应深度剖析
[渗透课程]第二篇下-HTTP协议的请求与响应深度剖析 HTTP1.1目前支持以下7种请求方法: 常见的MIME类型如下: 第一个数字有五种可能的取值: 目录 什么是请求方法?什么是请求头? HTTP ...
- 【精解】EOS标准货币体系与源码实现分析
EOS智能合约中包含一个exchange合约,它支持用户创建一笔交易,是任何两个基本货币类型之间的交易.这个合约的作用是跨不同币种(都是EOS上的标准货币类型)的,通过各自与EOS主链价值进行锚定,然 ...
- 【集合框架】JDK1.8源码分析之ArrayList详解(一)
[集合框架]JDK1.8源码分析之ArrayList详解(一) 一. 从ArrayList字表面推测 ArrayList类的命名是由Array和List单词组合而成,Array的中文意思是数组,Lis ...
- 【HANA系列】SAP HANA XS使用Odata标志全解析
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]SAP HANA XS使用Oda ...
- Python面试 【315+道题】
Python面试 [315+道题] 第一部分 Python基础篇(80题) 为什么学习Python? 因为看到python的发展趋势,觉得需要与时俱进,第一点,python开发速度极快,能快速完成一个 ...
随机推荐
- oracle 笔记---(六)__表空间
查看表空间的大小 select tablespace_name,block_size,contents from dba_tablespaces; 查看表空间对应的数据文件 select file_n ...
- oracle 基础知识(二)-表空间
一,表空间 01,表空间? Oracle数据库是通过表空间来存储物理表的,一个数据库实例可以有N个表空间,一个表空间下可以有N张表.有了数据库,就可以创建表空间.表空间(tablespace)是数据库 ...
- SpringMVC 源码阅读
- Beam概念学习系列之PTransform数据处理
不多说,直接上干货! PTransform数据处理 PTransform对PCollection进行并行处理,每次处理1条,例如Filter过滤.Groupby分组.Combine统计.Join关联等 ...
- Java动态性 字节码操作
Java动态性的两种常见方式:-字节码操作 - 反射;字节码操作比反射开销小,性能高,JAVAasist性能高于反射,低于ASM 运行时操作字节码可是实现 : 动态生成新的类:动态的改变某个类的结构 ...
- 生成正射影像/DSM,等高线提取
工具:ContextCapture,Globe Mapper 方法/步骤: 1.新建项目,导入影像,提交空三运算 在ContextCapture中新建项目,添加相关影像或视频和其他相关资源,资源,提交 ...
- Unity3D第二课之通过键盘、鼠标移动物体
public class xuanzhuan : MonoBehaviour { //平移速度变量 public float MoveSpeed;// Use this for initializat ...
- Java网络编程二
向web站点发送get post请求,并从web站点取得响应 通相应的set方法,在调用connect()方法前,可以设置请求的各种参数,实现同浏览器类似的访问,调用connect()后可以调用相应的 ...
- linux修改文件权限命令(chmod)
chmod命令是用于改变文件或目录的访问权限.用户用它控制文件或目录的访问权限. 该命令有两种用法.一种是包含字母和操作符表达式的文字设定法:另一种是包含数字的数字设定法. 1.文字设定法 chmod ...
- C# 判断List集合中是否有重复的项
/*在.Net 3.5 以上*/ ).Count() >= ;