题目大意:给定一个长度为 N 的字符串,求前 K 个长度为奇数的回文子串的长度的乘积是多少。

题解:利用回文自动机,将所有长度的回文串和个数求出来,按照长度排序进行模拟即可。

代码如下

// luogu-judger-enable-o2
#include <bits/stdc++.h>
using namespace std;
const int maxn=1e6+10;
const int mod=19930726;
typedef long long LL;
LL fpow(LL a,LL b){
LL ret=1%mod;
for(;b;b>>=1,a=a*a%mod)if(b&1)ret=ret*a%mod;
return ret;
} char s[maxn];
int n; LL k;
struct node{int len,sz;}t[maxn];
struct PAM{
int lst,tot,trie[maxn][26],fail[maxn],len[maxn],sz[maxn];
PAM(){tot=1,fail[0]=fail[1]=1,len[1]=-1;}
void extend(int c,int i){
int p=lst;
while(s[i-len[p]-1]!=s[i])p=fail[p];
if(!trie[p][c]){
int now=++tot,k=fail[p];
while(s[i-len[k]-1]!=s[i])k=fail[k];
fail[now]=trie[k][c],len[now]=len[p]+2;
trie[p][c]=now;
}
lst=trie[p][c],++sz[lst];
}
void solve(){
for(int i=tot;i>=2;i--){
t[i].sz=sz[i],t[i].len=len[i];
sz[fail[i]]+=sz[i];
}
sort(t+2,t+tot+1,[](const node &x,const node &y){
return x.len>y.len;
});
}
}pam; int main(){
scanf("%d%lld%s",&n,&k,s+1);
for(int i=1;i<=n;i++)pam.extend(s[i]-'a',i);
pam.solve();
int now=2,r=pam.tot,ans=1;
while(k){
if(now>r)return puts("-1"),0;
if(t[now].len%2==0){++now;continue;}
if(t[now].sz<=k)ans=ans*fpow(t[now].len,t[now].sz)%mod,k-=t[now].sz;
else ans=ans*fpow(t[now].len,k)%mod,k=0;
++now;
}
printf("%d\n",ans);
return 0;
}

【洛谷P1659】啦啦队排练的更多相关文章

  1. 洛谷 P1659 [国家集训队]拉拉队排练(Manacher)

    题目链接:https://www.luogu.com.cn/problem/P1659 思路: 首先跑一遍Manacher,用$cnt_i$记录长为$i$的回文串有多少个. 所记录的$cnt$并不是最 ...

  2. 【洛谷 P1659】 [国家集训队]拉拉队排练(manacher)

    题目链接 马拉车+简单膜你 #include <cstdio> #include <cstring> #include <algorithm> using name ...

  3. 洛谷P1538迎春舞会之数字舞蹈

    题目背景 HNSDFZ的同学们为了庆祝春节,准备排练一场舞会. 题目描述 在越来越讲究合作的时代,人们注意的更多的不是个人物的舞姿,而是集体的排列. 为了配合每年的倒计时,同学们决定排出——“数字舞蹈 ...

  4. 洛谷1640 bzoj1854游戏 匈牙利就是又短又快

    bzoj炸了,靠离线版题目做了两道(过过样例什么的还是轻松的)但是交不了,正巧洛谷有个"大牛分站",就转回洛谷做题了 水题先行,一道傻逼匈牙利 其实本来的思路是搜索然后发现写出来类 ...

  5. 洛谷P1352 codevs1380 没有上司的舞会——S.B.S.

    没有上司的舞会  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond       题目描述 Description Ural大学有N个职员,编号为1~N.他们有 ...

  6. 洛谷P1108 低价购买[DP | LIS方案数]

    题目描述 “低价购买”这条建议是在奶牛股票市场取得成功的一半规则.要想被认为是伟大的投资者,你必须遵循以下的问题建议:“低价购买:再低价购买”.每次你购买一支股票,你必须用低于你上次购买它的价格购买它 ...

  7. 洛谷 P2701 [USACO5.3]巨大的牛棚Big Barn Label:二维数组前缀和 你够了 这次我用DP

    题目背景 (USACO 5.3.4) 题目描述 农夫约翰想要在他的正方形农场上建造一座正方形大牛棚.他讨厌在他的农场中砍树,想找一个能够让他在空旷无树的地方修建牛棚的地方.我们假定,他的农场划分成 N ...

  8. 洛谷P1710 地铁涨价

    P1710 地铁涨价 51通过 339提交 题目提供者洛谷OnlineJudge 标签O2优化云端评测2 难度提高+/省选- 提交  讨论  题解 最新讨论 求教:为什么只有40分 数组大小一定要开够 ...

  9. 洛谷P1371 NOI元丹

    P1371 NOI元丹 71通过 394提交 题目提供者洛谷OnlineJudge 标签云端评测 难度普及/提高- 提交  讨论  题解 最新讨论 我觉得不需要讨论O long long 不够 没有取 ...

随机推荐

  1. 【spring实战第五版遇到的坑】3.2中配置关系映射时,表名和3.1中不一样

    3.2章中按照书中的步骤写好相应类的映射关系,发现启动时,之前在3.1章中建的表全部被删重新建立了,并且Ingredient表的数据没了,由于使用了JPA,默认使用的是hibernate,在启动时会删 ...

  2. PHP信号管理

    PHP信号管理   SIGHUP     终止进程     终端线路挂断 SIGINT     终止进程     中断进程 SIGQUIT    建立CORE文件终止进程,并且生成core文件 SIG ...

  3. vue+element-ui实现行数可控的表格输入

    element的table中使用 <template slot-scope="scope"> </template> 包裹想要插入的input,或者sele ...

  4. [置顶]生鲜配送管理系统_升鲜宝V2.0 销售订单汇总_采购任务分配功能_操作说明

    做好生鲜供应链系统,要注意三个方面,1.分拣 2 采购  3 库存,市面上做的比较成熟的功能,还是分拣这一块(按客户分拣.按订单分拣.按商品分类分拣.按商品分拣.按线路分拣.客户自由组合分拣)[下篇文 ...

  5. 如何修改Recovery的字符串资源

    前言:在实际的ROM修改中,Recovery的修改还是会经常遇到的,这篇文章主要讲解如何修改Recovery字符串.   首先我们先了解下大概的流程. 1.screen_ui.cpp 中的Screen ...

  6. (爬虫)urllib库

    一.爬虫简介 什么是爬虫?通俗来讲爬虫就是爬取网页数据的程序. 要了解爬虫,还需要了解HTTP协议和HTTPS协议:HTTP协议是超文本传输协议,是一种发布和接收HTML页面的传输协议:HTTPS协议 ...

  7. 【RL-TCPnet网络教程】第1章 当前主流的小型嵌入式网络协议栈

    第1章   当前主流的小型嵌入式网络协议栈 这几年物联网发展迅猛,各种新产品.新技术也是层出不穷,本章节就为大家介绍当前主流的小型嵌入式网络协议栈. 1.1  当前主流的嵌入式网络协议栈 1.2  u ...

  8. 关于MySQL集群的一些看法

    作者:Gary Chen链接:https://zhuanlan.zhihu.com/p/20204156来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 市面上的招聘往往 ...

  9. 记录未预编译文件“*.aspx”,因此不能请求该文件的几种处理办法

    对应Framework版本重新注册 2.0:C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -i 4.0:C:\Wind ...

  10. Eclipse为工具包关联源码(本例工具包为dom4j-1.6.1)

    最近学习了dom4j解析xml文件,然而在eclipse中,每次想看源码都要去到源代码文件里看,不能在eclipse中直接看, 然后我就瞎折腾,终于知道怎么把源代码添加到eclipse中了.(我的ec ...