Problem M. Mediocre String Problem(Z 函数 + PAM)

Problem M. Mediocre String Problem

给定两个串s,ts, ts,t,要求有多少不同的三元组(i,j,k)(i, j, k)(i,j,k),满足:

  • 1≤i≤j≤∣s∣1 \le i \le j \le \mid s \mid1ijs
  • 1≤k≤∣t∣1 \le k \le \mid t \mid1kt
  • j−i+1≥kj - i + 1 \ge kji+1k
  • s[i,j]+t[1,k]s[i, j] + t[1, k]s[i,j]+t[1,k]是一个回文串。

s[i,j]+t[1,k]s[i, j] + t[1, k]s[i,j]+t[1,k]连接而成的串为A+T+BA + T + BA+T+Bs[i,j]=A+T,t[1,k]=Bs[i, j] = A + T, t[1, k] = Bs[i,j]=A+T,t[1,k]=B,则一定满足rev(A)=Brev(A) = Brev(A)=BTTT其本身是一个非空回文串。

我们考虑把sss串,翻转,那么问题就变成了:

  • 1≤i≤j≤∣s∣1 \le i \le j \le \mid s \mid1ijs
  • 1≤k≤∣t∣1 \le k \le \mid t \mid1kt
  • j−i+1≥kj - i + 1 \ge kji+1k
  • s[i,j]+t[1,k]=T+A+Bs[i, j] + t[1, k] = T + A + Bs[i,j]+t[1,k]=T+A+B,其中T+A=s[i,j],B=t[1,k]T + A = s[i, j], B = t[1, k]T+A=s[i,j],B=t[1,k],满足A=BA = BA=B,且TTT是一个非空回文串。

可以考虑用exkmpexkmpexkmp,得到sss的所有后缀与ttt中前缀的最长匹配长度,然后枚举点iii,则答案为∑i=1mpalindrome_sum[i−1]×len[i]\sum\limits_{i = 1} ^{m} palindrome\_sum[i - 1] \times len[i]i=1mpalindrome_sum[i1]×len[i]

palindrome_sum[i] 表示以 i 结尾的回文串有多少个,可以用回文树,简单求得。

所以只要套上EXKMP,PAMEXKMP, PAMEXKMP,PAM即可。

#include <bits/stdc++.h>using namespace std;namespace PAM {
const int N = 1e6 + 10;int sz, tot, last, cnt[N], nex[N][26], len[N], fail[N], dep[N], palindrome_sum[N];char s[N];int node(int l) {++sz, len[sz] = l, fail[sz] = cnt[sz] = 0;return sz;
}void init() {sz = -1, last = 0, s[tot = 0] = '$';node(0), node(-1), fail[0] = 1;
}int getFail(int rt) {while (s[tot - len[rt] - 1] != s[tot]) {rt = fail[rt];}return rt;
}void insert(char c, int id) {s[++tot] = c;int cur = getFail(last);if (!nex[cur][c - 'a']) {int x = node(len[cur] + 2);fail[x] = nex[getFail(fail[cur])][c - 'a'];nex[cur][c - 'a'] = x;}last = nex[cur][c - 'a'];cnt[last]++, dep[last] = dep[fail[last]] + 1;palindrome_sum[id] = dep[last];
}
}const int N = 2e6 + 10;char str1[N], str2[N];int a[N], n, m;int main() {// freopen("in.txt", "r", stdin);// freopen("out.txt", "w", stdout);scanf("%s %s", str2 + 1, str1 + 1);n = strlen(str1 + 1), m = strlen(str2 + 1);reverse(str2 + 1, str2 + m + 1);for (int i = 1; i <= m; i++) {str1[i + n] = str2[i];}for (int i = 2, l = 1, r = 1; i <= n + m; i++) {if (i <= r && a[i - l + 1] < r - i + 1) {a[i] = a[i - l + 1];}else {a[i] = max(0, r - i + 1);while (i + a[i] <= n + m && str1[a[i] + 1] == str1[i + a[i]]) {a[i]++;}}if (i + a[i] - 1 > r) {l = i, r = i + a[i] - 1;}}PAM::init();for (int i = 1; i <= m; i++) {PAM::insert(str2[i], i);}long long ans = 0;for (int i = n + 1; i <= n + m; i++) {ans += 1ll * PAM::palindrome_sum[i - n - 1] * min({n, n + m - i + 1, a[i]});}printf("%lld\n", ans);return 0;
}

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

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

相关文章

【干货】规模化敏捷DevOps四大实践之持续探索CE(中英对照版)

本文翻译来自SAFe DevOps社群帅哥网友贾磊&#xff1a;高级质量经理&敏捷教练 曾就职于外企、国企、大型上市企业等&#xff0c;担任过测试工程师、测试经理、项目经理、敏捷教练、质量总监、高级质量经理等岗位。是一名敏捷变革的爱好者和践行者。爱好网球、羽毛球。正文原…

Spring Cloud——Eureka——架构体系

1、概述 Eureka包括两个端&#xff1a; Eureka Server&#xff1a;注册中心服务端&#xff0c;用于维护和管理注册服务列表。Eureka Client&#xff1a;注册中心客户端&#xff0c;向注册中心注册服务的应用都可以叫做Eureka Client&#xff08;包括Eureka Server本身&#x…

C - Maximize GCD(简单数论)

C - Maximize GCD 给定长度为n,(2≤3105)n, (2 \le 3 \times 10 ^ 5)n,(2≤3105)的数组a,(1≤ai≤3105)a, (1 \le a_i \le 3 \times 10 ^ 5)a,(1≤ai​≤3105)&#xff0c;一个数字K,(1≤K≤1018)K, (1 \le K \le 10 ^{18})K,(1≤K≤1018)&#xff0c; 我们可以对数组aaa进行…

推荐.neter常用优秀开源项目系列之二

.net社区有很多优秀的开源项目&#xff0c;我们今天再推荐12个开源项目&#xff1b;1. Domain-Driven-Design-ExampleDDD 示例 挺不错的。github https://github.com/zkavtaskin/Domain-Driven-Design-Example2.SmartStoreNET开源的电商项目github https://github.com/smartsto…

Zookeeper: Zookeeper架构及FastLeaderElection机制

本文转发自技术世界&#xff0c;原文链接 http://www.jasongj.com/zookeeper/fastleaderelection/ 一、Zookeeper是什么 Zookeeper是一个分布式协调服务&#xff0c;可用于服务发现&#xff0c;分布式锁&#xff0c;分布式领导选举&#xff0c;配置管理等。 这一切的基础&am…

I. Rise of Shadows(类欧几里得)

I. Rise of Shadows 一天有HHH个小时&#xff0c;MMM分钟&#xff0c;问&#xff0c;有多少个整数分钟&#xff0c;满足时针与分针的角度≤α\le \alpha≤α&#xff0c;α2πAHM\alpha \frac{2 \pi A}{HM}αHM2πA​。 ∑i0H−1∑j0M−1[∣2π(iMj)HM−2πjM∣≤2πAHM]∑i0…

与时俱进 | 博客现已运行在 .NET Core 3.0 及 Azure 上

点击上方蓝字关注“汪宇杰博客”导语9月23日&#xff0c;微软正式发布了 .NET Core 3.0&#xff0c;这个版本具有大量新功能和改进。我也在第一时间将自己的博客网站更新到了 .NET Core 3.0&#xff0c;并且仍然跑在微软智慧云 Azure 国际版的应用服务上。本文总结了我在博客迁…

Zookeeper:基于Zookeeper的分布式锁与领导选举

本文转发自技术世界&#xff0c;原文链接 http://www.jasongj.com/zookeeper/distributedlock/ 1、Zookeeper特点 1.1 Zookeeper节点类型 如上文《Zookeeper架构及FastLeaderElection机制》所述&#xff0c;Zookeeper 提供了一个类似于 Linux 文件系统的树形结构。该树形结构…

Asp.Net Core Mvc Razor之RazorPage

在AspNetCore.Mvc.Razor命名空间中的RazorPage继承RazorPageBase&#xff0c;并定义的属性为&#xff1a;HttpContext Context 表示当前请求执行的HttpContextRazorPageBase定义为抽象类&#xff0c;并继承了接口&#xff1a;IRazorPageIRazorPage接口定义属性如下&#xff1a;…

#138. 类欧几里得算法

#138. 类欧几里得算法 以下除法均为向下取整&#xff0c; 定义f(a,b,c,n,k1,k2)∑x0nxk1(axbc)k2f(a, b, c, n, k_1, k_2) \sum\limits_{x 0} ^{n} x ^{k_1} \left(\frac{a \times x b}{c}\right) ^ {k_2}f(a,b,c,n,k1​,k2​)x0∑n​xk1​(caxb​)k2​。 ∑x0nxk1(axbc)k2…

Spring Cloud——Consul——架构体系

我们知道&#xff0c;Eureka 2.X因遇到问题&#xff0c;已停止研发。Spring Cloud官方建议迁移到Consul或者Zookeeper等其他服务发现中间件。 下面是 Spring Cloud 支持的服务发现软件以及特性对比&#xff1a; 一、Consul 介绍 Consul 是 HashiCorp 公司推出的开源工具&…

ASP.NET Core 3.0 gRPC 双向流

目录ASP.NET Core 3.0 使用gRPCASP.NET Core 3.0 gRPC 双向流ASP.NET Core 3.0 gRPC 认证授权一.前言在前一文 《二. 什么是 gRPC 流gRPC 有四种服务类型&#xff0c;分别是&#xff1a;简单 RPC&#xff08;Unary RPC&#xff09;、服务端流式 RPC &#xff08;Server streami…

Spring cloud Loadbalance

feign原理介绍&#xff1a; https://segmentfault.com/a/1190000016776471?utm_sourcetag-newest http://techblog.ppdai.com/2018/05/28/20180528/ https://blog.csdn.net/xiaofeng10330111/article/details/85682513 负载均衡策略&#xff1a; 随机 (Random) 随机策略很…

类欧几里得(模板题推导)

类欧几里得 设三个函数f(a,b,c,n)∑i0naibc,g(a,b,c,n)∑i0niaibc,h(a,b,c,n)∑i0n(aibc)2f(a, b, c, n) \sum\limits_{i 0} ^{n} \frac{a \times i b}{c}, g(a, b, c, n) \sum\limits_{i 0} ^{n} i \times \frac{a \times i b}{c}, h(a, b, c, n) \sum\limits_{i 0} …

开源公司被云厂商“寄生”,咋整?

上周 OSS Capital 召集一些开源公司&#xff0c;组织了一场关于如何面对“云厂商给开源带来的危害”的会议。OSS Capital 是一家风险投资公司&#xff0c;该公司只投开源&#xff0c;其董事会合伙人之一是开源运动的先驱人物 Bruce Perens。网上有一个十分有名的“开源商业化独…

Spring Cloud Config——原理解析

springCloud config项目,用来为分布式的微服务系统中提供集成式外部配置支持,分为客户端和服务端 可以让你把配置放到远程服务器&#xff0c;目前支持本地存储、Git以及Subversion。 spring官方如下介绍: 简而言之: 通过配置服务(Config Server)来为所有的环境和应用提供外部配…

AWS加入.NET Foundation企业赞助商计划

.NET 走向开源&#xff0c;MIT许可协议。 微软为了推动.NET开源社区的发展&#xff0c;2014年联合社区成立了.NET基金会。.NET基金会是一个独立的组织&#xff0c;支持.NET社区和开源&#xff0c;旨在拓宽和加强.NET生态系统和社区。这可以通过多种方式完成&#xff0c;包括项目…

K. Easy Sigma(类欧几里得)

K. Easy Sigma ∑i1n(−1)⌊ik⌋,(n≤109,k≤104)\sum_{i 1} ^{n} (-1) ^{\lfloor i \times \sqrt k \rfloor}, (n \le 10 ^ 9, k \le 10 ^ 4)\\ i1∑n​(−1)⌊ik​⌋,(n≤109,k≤104) 考虑(−1)x1−2(xmod2)1−2(x−2x2)1−2x4⌊x2⌋(-1) ^{x} 1 - 2 \times (x \mod 2) 1 …

Spring cloud——Hystrix 原理解析

1、背景 分布式系统环境下&#xff0c;服务间类似依赖非常常见&#xff0c;一个业务调用通常依赖多个基础服务。如下图&#xff0c;对于同步调用&#xff0c;当库存服务不可用时&#xff0c;商品服务请求线程被阻塞&#xff0c;当有大批量请求调用库存服务时&#xff0c;最终可…

【B】替换 Quartz.net 默认使用的 MySql.Data 为 Mysqlconnector 的学习过程

文章转载授权级别&#xff1a;B无论是 Quartz.net 还是 MySql.Data 都是我们比较熟悉的库了&#xff0c;Quartz.net 如果配置为使用 MySql 数据库做持久化时&#xff0c;默认是硬编码了使用 MySql.Data 来操作 MySql 数据库的。下面是我的一些个人诉求和实践&#xff0c;和大家…