【BZOJ 2160】 拉拉队排练
【题目链接】
https://www.lydsy.com/JudgeOnline/problem.php?id=2160
【算法】
先简化题意 : 给定一个字符串,求最长的k个奇回文子串长度的乘积
先运行Manacher算法,对于每个位置i,我们知道以i为中心的回文串的最长半径为pi,那么i这个位置对半径为1-p[i]的回文串的个数都产生了1的”贡献“
因此,我们可以用差分求出任意半径的回文串个数,然后统计答案即可,注意要用快速幂
【代码】
#include<bits/stdc++.h>
using namespace std;
#define MAXN 1000010
const int P = ;
typedef long long ll; int i,len,n;
ll sum,ans,k;
int p[MAXN];
ll cnt[MAXN];
char s[MAXN]; inline ll power(ll a,ll n)
{
ll ans = ,b = a;
while (n)
{
if (n & ) ans = 1ll * ans * b % P;
n >>= ;
b = 1ll * b * b % P;
}
return ans;
} inline void Manacher()
{
int i,pos = ,mx = ;
for (i = ; i <= len; i++)
{
if (mx > i) p[i] = min(p[*pos-i],mx-i);
else p[i] = ;
while (i - p[i] >= && i + p[i] <= len && s[i-p[i]] == s[i+p[i]]) p[i]++;
if (i + p[i] - > mx)
{
mx = i + p[i] - ;
pos = i;
}
}
} int main()
{ scanf("%d%lld%s",&n,&k,s+);
len = strlen(s+);
Manacher();
for (i = ; i <= len; i++)
{
cnt[]++;
cnt[p[i]+]--;
}
for (i = ; i <= (len + ) / ; i++) cnt[i] += cnt[i-];
sum = ; ans = ;
for (i = (len + ) / ; i >= ; i--)
{
if (cnt[i] <= ) continue;
if (sum + cnt[i] < k)
{
sum += cnt[i];
ans = 1ll * ans * power(*i-,cnt[i]) % P;
} else
{
ans = 1ll * ans * power(*i-,k-sum) % P;
sum += cnt[i];
break;
}
}
if (sum < k) printf("-1\n");
else printf("%lld\n",ans); return ; }
【BZOJ 2160】 拉拉队排练的更多相关文章
- bzoj 2160: 拉拉队排练 回文自动机
题目: Description 艾利斯顿商学院篮球队要参加一年一度的市篮球比赛了.拉拉队是篮球比赛的一个看点,好的拉拉队往往能帮助球队增加士气,赢得最终的比赛.所以作为拉拉队队长的楚雨荨同学知道,帮助 ...
- BZOJ 2160: 拉拉队排练
Description 问长度前 \(k\) 大的奇长度回文子串的乘积. Sol Manacher. 直接马拉车跑一边,统计一下答案,每次将长度-2就可以了. Code /************** ...
- BZOJ 2160: 拉拉队排练(回文树)
传送门: [1]:BZOJ [2]:洛谷 •题意 求串 s 中出现的所有奇回文串,并按照长度由大到小排序: 输出前 k 个奇回文串的乘积 mod 19930726; 如果奇回文串的个数不足 k 个,输 ...
- BZOJ.2160.拉拉队排练(Manacher)
题目链接 \(Description\) 求给定字符串中 最长的k个回文串长度的乘积(要求回文串长度为奇数):若奇数长度回文串不足k个则输出-1.(len<=10^6,k<=10^12) ...
- 【BZOJ】2160: 拉拉队排练(Manacher)
题目 2160: 拉拉队排练 Description 艾利斯顿商学院篮球队要参加一年一度的市篮球比赛了.拉拉队是篮球比赛的一个看点,好的拉拉队往往能帮助球队增加士气,赢得最终的比赛.所以作为拉拉队队长 ...
- HYSBZ 2160 拉拉队排练(回文树)
2160: 拉拉队排练 Time Limit: 10 Sec Memory Limit: 259 MB Submit: 825 Solved: 324 [Submit][Status][Discu ...
- 【BZOJ2160】拉拉队排练(回文树)
[BZOJ2160]拉拉队排练(回文树) 题面 BZOJ 题解 看着题目, 直接构建回文树 求出每个回文串的出现次数 直接按照长度\(sort\)一下就行了 然后快速幂算一下答案就出来了 这题貌似可以 ...
- 青橙 A1255. 拉拉队排练(陶文博)
A1255. 拉拉队排练(陶文博) 时间限制:1.0s 内存限制:512.0MB 总提交次数: AC次数: 平均分: 将本题分享到: 查看未格式化的试题 提交 ...
- BZOJ_2160_拉拉队排练_manacher
BZOJ_2160_拉拉队排练_manacher Description 艾利斯顿商学院篮球队要参加一年一度的市篮球比赛了.拉拉队是篮球比赛的一个看点,好的拉拉队往往能帮助球队增加士气,赢得最终的比赛 ...
- bzoj2160拉拉队排练
bzoj2160拉拉队排练 题意: 给一个字符串,求最长的k个回文子串(此处回文子串长度必须为奇数)长度的乘积.字符串长度≤1000000 题解: 先用manacher预处理出第i个字符为中心的最长回 ...
随机推荐
- CAD把当前图形保为一个jpg文件(com接口Delphi语言)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 procedure TForm2.Button1Click(Sender: TObje ...
- Queueingconsumer 找不到
springboot从1.5.9升级到2.0.0,queueingconsumer报错没有这个类,改为使用 DefaultConsumer
- JavaScript--小白入门篇3
一.函数 1.1 初步认识函数 1 <script type="text/javascript"> 2 console.log("你好"); 3 s ...
- 洛谷——P1972 [SDOI2009]HH的项链(线段树)
P1972 [SDOI2009]HH的项链 HH 有一串由各种漂亮的贝壳组成的项链.HH 相信不同的贝壳会带来好运,所以每次散步完后,他都会随意取出一段贝壳,思考它们所表达的含义.HH 不断地收集新的 ...
- 计算机网络篇(前端、HTTP)
全端工程师需知道的计算机网络知识 一.网络篇-http报文详解 1. 分类 请求报文 响应报文 2. 报文结构 (一).请求报文 一个HTTP请求报文由请求行(request line).请求头部(h ...
- buf.writeFloatBE()函数详解
buf.writeFloatBE(value, offset[, noAssert]) buf.writeFloatLE(value, offset[, noAssert]) value {Numbe ...
- ubuntu 下安装wine
PPA地址: https://launchpad.net/~ubuntu-wine/+archive/ppa 添加wine的ppa源 sudo add-apt-repository ppa:ubunt ...
- CF2B The least round way
[题解] 可以发现10的因数除了1和10之外只有2和5了,那么走过的路径上各个数字的2的因数个数之和.5的因数个数之和中较小的一个即是答案.这样的话DP即可.同时需要注意有0的情况,有0的时候有一个答 ...
- NOIP2018提高组省一冲奖班模测训练(一)
比赛链接 https://www.51nod.com/contest/problemList.html#!contestId=72&randomCode=147206 这次考试的题非常有质量 ...
- SRAM的简单概念
CY7C138 版权声明:本文为博主原创文章,未经博主允许不得转载.