题目描述

艾利斯顿商学院篮球队要参加一年一度的市篮球比赛了。拉拉队是篮球比赛的一个看点,好的拉拉队往往能帮助球队增加士气,赢得最终的比赛。所以作为拉拉队队长的楚雨荨同学知道,帮助篮球队训练好拉拉队有多么的重要。
  拉拉队的选拔工作已经结束,在雨荨和校长的挑选下,n位集优秀的身材、舞技于一体的美女从众多报名的女生中脱颖而出。这些女生将随着篮球队的小伙子们一起,和对手抗衡,为艾利斯顿篮球队加油助威。
  一个阳光明媚的早晨,雨荨带领拉拉队的队员们开始了排练。n个女生从左到右排成一行,每个人手中都举了一个写有26个小写字母中的某一个的牌子,在比赛的时候挥舞,为小伙子们呐喊、加油。
  雨荨发现,如果连续的一段女生,有奇数个,并且他们手中的牌子所写的字母,从左到右和从右到左读起来一样,那么这一段女生就被称作和谐小群体。
  现在雨荨想找出所有和谐小群体,并且按照女生的个数降序排序之后,前K个和谐小群体的女生个数的乘积是多少。由于答案可能很大,雨荨只要你告诉她,答案除以19930726的余数是多少就行了。

Input
  输入为标准输入。
  第一行为两个正整数n和K,代表的东西在题目描述中已经叙述。
  接下来一行为n个字符,代表从左到右女生拿的牌子上写的字母。

Output
  输出为标准输出。
  输出一个整数,代表题目描述中所写的乘积除以19930726的余数,如果总的和谐小群体个数小于K,输出一个整数-1。

Sample Input
5 3
ababa

Sample Output
45

n≤10^6 k≤10^12

分析

求回文串,典型manacher
利用len数组的重合(大的包含以下所有奇数串)
可以跑一个前缀和,利用前缀和下标和数量跑快速幂得出结果(不要问为什么用快速幂)

#include <iostream>
#include <cstdio>
#define rep(i,a,b) for (i=a;i<=b;i++)
#define q 19930726
using namespace std;
long long len[1000003],a[1000003];
string s;
int n;
long long k;
void INIT()
{scanf("%d%lld\n",&n,&k);s="";s+='$';int i;char c;rep(i,1,n){scanf("%c",&c);s+=c;}s+='#';n+=2;
}void MANACHER(string s)
{int mx=0,i,j,id=0;rep(i,0,n-1){j=id*2-i;if (i<mx)len[i]=min(len[j],(long long)mx-i);else len[i]=1;while (s[i-len[i]]==s[i+len[i]])len[i]++;if (i+len[i]>mx){id=i;mx=i+len[i];}}
}long long GET_POWER(long long x,long long r)
{long long ans=1;while (r){if (r&1) ans=ans*x%q;x=x*x%q;r>>=1;}return ans;
}long long GET_SUM()
{int i,mx=0;long long x;long long ans=1;rep(i,1,n-2)a[len[i]*2-1]++,mx=max((long long)mx,len[i]*2-1);for (i=mx-2;i>=1;i--)a[i]+=a[i+2];while(mx>0&&k>0){x=a[mx]>k?k:a[mx];ans=ans*GET_POWER(mx,x)%q;mx--;k-=x;}return ans;
}int main()
{INIT();MANACHER(s);printf("%lld",GET_SUM());
}

[manacher]拉拉队排练相关推荐

  1. bzoj 2160: 拉拉队排练

    2160: 拉拉队排练 Time Limit: 10 Sec  Memory Limit: 259 MB [Submit][Status][Discuss] Description 艾利斯顿商学院篮球 ...

  2. BZOJ 2160 拉拉队排练

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

  3. BZOJ2160:拉拉队排练(Manacher)

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

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

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

  5. P1659 [国家集训队]拉拉队排练

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

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

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

  7. 题解报告——拉拉队排练

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

  8. luogu P1659 [国家集训队]拉拉队排练

    唔....话说好久没有发布题解了(手痒痒了 首先特别鸣谢lykkk大佬今天下午教我Manacher算法,甚是感谢 为了体现学习成果,写一篇蒟蒻版的题解(大佬勿喷 言归正传 题面-->在这儿 首先 ...

  9. [ BZOJ 2160 ] 拉拉队排练

    \(\\\) \(Description\) 一个由小写字母构成的长为\(N\)的字符串,求前\(K\)长的奇数长度回文子串长度之积,对\(19930726\)取模后的答案. \(N\in [1,10 ...

最新文章

  1. 去除菜单项的加速键--‘’符号
  2. [leetcode] Bulb Switcher
  3. Codeforces Round #555 (Div. 3) AB
  4. WinFrom下Webbrowser加载自定义页面的技巧
  5. STM32F0使用LL库实现DMA方式AD采集
  6. 冠状病毒过后世界九大未来预测
  7. 子系统单点登录配置说明
  8. 关于div中图片水平垂直居中的问题
  9. 《Linux命令行与shell脚本编程大全》第十八章 图形化桌面环境中的脚本编程
  10. IE漏洞被黑客利用,导致全球上万个网站受害
  11. 海康摄像头直连电脑修改IP解决播放失败无画面无法连接问题
  12. 软件需求说明书/ 概要设计说明书/项目开发计划/详细设计说明书模版(说明要点及要点解释)
  13. 手游天龙八部服务器注册上限,腾讯手游助手注册已达上限怎么办 | 手游网游页游攻略大全...
  14. iTunes 给iPhone制作铃声
  15. 带南海九段线分位数地图可视化(R语言版)
  16. SCANV团队预警libsys图书馆系统注入漏洞
  17. linux下分析webmail代码,十分钟快速架设Linux系统下WebMail
  18. 将Google Analytics for Firebase数据导入BigQuery
  19. 显示器是微型计算机必须配置的一,高职单招计算机基础练习题
  20. MACD指标使用的一些小技巧

热门文章

  1. 微信群互动h5游戏推荐:旅行匹配度大考验
  2. Web初学-2022.11.6-12.02
  3. leetcode91
  4. 小波分析、小波降噪matlab代码实现
  5. Avue 点击事件触发新增,新增携带数据
  6. 打印机驱动程序无法使用怎么办?
  7. OceanBase创始人阳振坤:什么是面向未来的数据库?
  8. 蓝色简洁大学毕业生求职简历PPT模板
  9. 你知道怎样用Excel打印【条形码】吗?
  10. 【JavaWeb开发-Servlet】拾起海中的漂流瓶超强版