传送门:

  [1]:BZOJ

  [2]:洛谷

•题意

  求串 s 中出现的所有奇回文串,并按照长度由大到小排序;

  输出前 k 个奇回文串的乘积 mod 19930726;

  如果奇回文串的个数不足 k 个,输出 -1;

•题解

  将串 s 跑一边回文自动机;

  将求解出的 len,cnt 数组存入一个结构体中并按照 len 由大到小排序;

  将前 k 个奇回文串的长度相乘就行;

  记得用快速幂,并且只要奇回文串的长度乘积;

•Code

 #include<bits/stdc++.h>
using namespace std;
#define ll long long
const int MOD=;
const int maxn=1e6+; int n;
ll k;
char s[maxn]; struct PAM
{
int tot;
int last;
ll cnt[maxn];
ll len[maxn];
int fail[maxn];
int son[maxn][]; int newNode(int Len)
{
for(int i=;i < ;++i)
son[tot][i]=; len[tot]=Len;
fail[tot]=;
cnt[tot]=; return tot++;
}
int getFail(int p,int i)
{
while(s[i-len[p]-] != s[i])
p=fail[p];
return p;
}
void Init()
{
tot=;
last=; newNode();
newNode(-); fail[]=;
}
void Count()
{
for(int i=tot-;i >= ;--i)
cnt[fail[i]] += cnt[i];
}
void pam()
{
Init(); for(int i=;i <= n;++i)
{
s[i]=s[i]-'a'+; int cur=getFail(last,i); if(!son[cur][s[i]])
{
int now=newNode(len[cur]+);
fail[now]=son[getFail(fail[cur],i)][s[i]];
son[cur][s[i]]=now; }
cnt[last=son[cur][s[i]]]++;
}
Count();
}
}_pam;
struct Data
{
ll cnt;
ll len;
bool operator < (const Data &obj) const
{
return len > obj.len;
}
}a[maxn]; ll qPow(ll a,ll b,ll m)
{
ll ans=;
a %= m;
while(b)
{
if(b&)
ans=ans*a%m;
a=a*a%m;
b >>= ;
}
return ans;
}
int main()
{
scanf("%d%lld",&n,&k);
scanf("%s",s+);
s[]='#'; _pam.pam(); int x=;
for(int i=;i < _pam.tot;i++)
a[++x]=Data{_pam.cnt[i],_pam.len[i]}; sort(a+,a+x+); int index=;
ll ans=;
while(index <= x)
{
if(!(a[index].len&))///坑:如果不是奇回文串,continue
{
index++;
continue;
} ll cur=min(k,a[index].cnt); ans *= qPow(a[index++].len,cur,MOD);
ans %= MOD;
k -= cur; if(k == )
break;
}
if(k > )
ans=-; printf("%lld\n",ans);
}

BZOJ 2160: 拉拉队排练(回文树)的更多相关文章

  1. bzoj 2160: 拉拉队排练 回文自动机

    题目: Description 艾利斯顿商学院篮球队要参加一年一度的市篮球比赛了.拉拉队是篮球比赛的一个看点,好的拉拉队往往能帮助球队增加士气,赢得最终的比赛.所以作为拉拉队队长的楚雨荨同学知道,帮助 ...

  2. BZOJ2160拉拉队排练——回文自动机

    题目描述 艾利斯顿商学院篮球队要参加一年一度的市篮球比赛了.拉拉队是篮球比赛的一个看点,好的拉拉队往往能帮助球队增加士气,赢得最终的比赛.所以作为拉拉队队长的楚雨荨同学知道,帮助篮球队训练好拉拉队有多 ...

  3. BZOJ 2160: 拉拉队排练

    Description 问长度前 \(k\) 大的奇长度回文子串的乘积. Sol Manacher. 直接马拉车跑一边,统计一下答案,每次将长度-2就可以了. Code /************** ...

  4. BZOJ.2160.拉拉队排练(Manacher)

    题目链接 \(Description\) 求给定字符串中 最长的k个回文串长度的乘积(要求回文串长度为奇数):若奇数长度回文串不足k个则输出-1.(len<=10^6,k<=10^12) ...

  5. 【BZOJ2342】双倍回文(回文树)

    [BZOJ2342]双倍回文(回文树) 题面 BZOJ 题解 构建出回文树之后 在\(fail\)树上进行\(dp\) 如果一个点代表的回文串长度为\(4\)的倍数 并且存在长度为它的一半的回文后缀 ...

  6. HYSBZ 2160 拉拉队排练(回文树)

    2160: 拉拉队排练 Time Limit: 10 Sec  Memory Limit: 259 MB Submit: 825  Solved: 324 [Submit][Status][Discu ...

  7. 【BZOJ2160】拉拉队排练(回文树)

    [BZOJ2160]拉拉队排练(回文树) 题面 BZOJ 题解 看着题目, 直接构建回文树 求出每个回文串的出现次数 直接按照长度\(sort\)一下就行了 然后快速幂算一下答案就出来了 这题貌似可以 ...

  8. [回文树][BZOJ2160][国家集训队]拉拉队排练

    题面 Description 艾利斯顿商学院篮球队要参加一年一度的市篮球比赛了.拉拉队是篮球比赛的一个看点,好的拉拉队往往能帮助球队增加士气,赢得最终的比赛.所以作为拉拉队队长的楚雨荨同学知道,帮助篮 ...

  9. 【BZOJ】2160: 拉拉队排练(Manacher)

    题目 2160: 拉拉队排练 Description 艾利斯顿商学院篮球队要参加一年一度的市篮球比赛了.拉拉队是篮球比赛的一个看点,好的拉拉队往往能帮助球队增加士气,赢得最终的比赛.所以作为拉拉队队长 ...

随机推荐

  1. 数据ETL是指什么

    ETL是数据抽取(Extract).清洗(Cleaning).转换(Transform).装载(Load)的过程.是构建数据仓库的重要一环,用户从数据源抽取出所需的数据,经过数据清洗,最终按照预先定义 ...

  2. Tool-图片压缩-腾讯智图:腾讯智图

    ylbtech-Tool-图片压缩-腾讯智图:腾讯智图 智图是腾讯ISUX前端团队开发的一个专门用于图片压缩和图片格式转换的平台,其功能包括针对png,jpeg,gif等各类格式图片的压缩,以及为上传 ...

  3. R语言均值,中位数和模式

    R语言均值,中位数和模式 在R统计分析是通过用许多内置函数来执行的. 大多数这些函数是R基本包的一部分.这些函数需要R向量作为输入参数并给出结果. 我们正在讨论本章中的函数是平均数,中位数和模式. 平 ...

  4. [Offer收割]编程练习赛104

    题目过于简单,没啥好说的,但是拿了个第一感觉很爽,记录一下 题目1 : 小Hi与魔法 排序,从1开始递增 #include <bits/stdc++.h> using namespace ...

  5. txt改后缀弹窗表白

    one. 打开新建的文本文件,输入字符:msgbox("此处可替换成你想要出现的文字"),括号和引号是英文状态下的标点.(可根据自己的需要输入多行) two. 保存新建的文本文件, ...

  6. js中小知识点

    JavaScript 中 typeof 和 instanceof 常用来判断一个变量是否为空,或者是什么类型的.但它们之间还是有区别的: typeof typeof 是一个一元运算,放在一个运算数之前 ...

  7. bzoj1688 疾病管理

    Description Alas! A set of D (1 <= D <= 15) diseases (numbered 1..D) is running through the fa ...

  8. C++模板编译模型

    一:传统的编译模型 使用C/C++进行编程时,一般会使用头文件以使定义和声明分离,并使得程序以模块方式组织.将函数声明.类的定义放在头文件中,而将函数实现以及类成员函数的定义放在独立的文件中. 但是对 ...

  9. AutoCAD安装失败怎样卸载重新安装AutoCAD,解决AutoCAD安装失败的方法总结

    技术帖:AutoCAD没有按照正确方式卸载,导致AutoCAD安装失败.楼主也查过网上关于如何解决AutoCAD安装失败的一些文章,是说删除几个AutoCAD文件和AutoCAD软件注册表就可以解决A ...

  10. 修改eclipse默认注释

    windows-->preference-->Java-->Code Style-->Code Templates -->Comments :注释--> ... 关 ...