Description

问长度前 \(k\) 大的奇长度回文子串的乘积.

Sol

Manacher.

直接马拉车跑一边,统计一下答案,每次将长度-2就可以了.

Code

/**************************************************************
Problem: 2160
User: BeiYu
Language: C++
Result: Accepted
Time:288 ms
Memory:36456 kb
****************************************************************/ #include <cstdio>
#include <iostream>
using namespace std; typedef long long LL;
const int N = 2000500;
const LL p = 19930726; LL n,k,st,ans=1;
LL f[N],c[N];
char ch[N],s[N]; LL Pow(LL a,LL b,LL r=1) { for(;b;b>>=1,a=a*a%p) if(b&1) r=r*a%p;return r; }
int main() {
cin>>n>>k;
scanf("%s",s+1);
s[0]='$'; for(LL i=1,mx=0,j=0;i<=n;i++) {
if(mx>i) f[i]=min(f[2*j-i],mx-i);else f[i]=1;
for(;s[i+f[i]] == s[i-f[i]];f[i]++);
if(i+f[i]>mx) mx=i+f[i],j=i;
}
for(int i=1;i<=n;i++) c[f[i]*2-1]++,st=max(st,f[i]*2-1); // for(int i=0;i<=n;i++) putchar(s[i]);cout<<endl;
// for(int i=0;i<=n;i++) cout<<f[i]<<" ";cout<<endl;
// for(int i=0;i<=st;i++) cout<<c[i]<<" ";cout<<endl; for(LL t;st;st--) {
t=min(c[st],k);
ans=(ans*Pow(st,t))%p;
k-=t;
if(st-2>0) c[st-2]+=c[st];
if(!k) break;
}
if(k) puts("-1");
else cout<<ans<<endl;
return 0;
}

BZOJ 2160: 拉拉队排练的更多相关文章

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

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

  2. BZOJ 2160: 拉拉队排练(回文树)

    传送门: [1]:BZOJ [2]:洛谷 •题意 求串 s 中出现的所有奇回文串,并按照长度由大到小排序: 输出前 k 个奇回文串的乘积 mod 19930726; 如果奇回文串的个数不足 k 个,输 ...

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

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

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

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

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

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

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

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

  7. 青橙 A1255. 拉拉队排练(陶文博)

    A1255. 拉拉队排练(陶文博) 时间限制:1.0s   内存限制:512.0MB   总提交次数:   AC次数:   平均分:   将本题分享到:        查看未格式化的试题   提交   ...

  8. BZOJ_2160_拉拉队排练_manacher

    BZOJ_2160_拉拉队排练_manacher Description 艾利斯顿商学院篮球队要参加一年一度的市篮球比赛了.拉拉队是篮球比赛的一个看点,好的拉拉队往往能帮助球队增加士气,赢得最终的比赛 ...

  9. bzoj2160拉拉队排练

    bzoj2160拉拉队排练 题意: 给一个字符串,求最长的k个回文子串(此处回文子串长度必须为奇数)长度的乘积.字符串长度≤1000000 题解: 先用manacher预处理出第i个字符为中心的最长回 ...

随机推荐

  1. [LeetCode] Longest Valid Parentheses 最长有效括号

    Given a string containing just the characters '(' and ')', find the length of the longest valid (wel ...

  2. IT培训行业揭秘(四)

    IT培训班的老师前面已经说过,很多都是从一线程序员岗位转过来的,因为培训行业的收入整体上来看还是比作普通程序员要高一些,这是市场的普遍行情.还有一部分老师从培训班学习过并且留到培训班任教的.一般这种老 ...

  3. APP逆向常识

    SO库Linux系统下的动态库文件,就像win系统下的dll文件一样.将APK,改成RAR,在Lib目录下.dex(classes.dex)Dex是Android系统中可以在Dalvik虚拟机上直接运 ...

  4. Laravel增删改查语句总结

    <?php Class Que { /* * 查询: */ public function index() { $users = User::query()->paginate(20); ...

  5. AC自动机 HDU 3065

    大概就是裸的AC自动机了 #include<stdio.h> #include<algorithm> #include<string.h> #include< ...

  6. C# http请求数据

    http中get和post请求的最大区别:get是通过URL传递表单值,post传递的表单值是隐藏到 http报文体中 http以get方式请求数据 /// <summary> /// g ...

  7. mysql更新密码

    mysql -u root mysql> use mysql; mysql> UPDATE user SET Password = PASSWORD('newpass') WHERE us ...

  8. vs中使用beyondcompare比较

    开启 Visual Studio  的 [工具] /[选项] / [源代码管理] /[Visual Studio Team Foundation],并开启「配置用户工具」 如下图单击「添加」按钮 接着 ...

  9. Sublime插件:

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "Helvetica Neue"; color: #e4af0a } ht ...

  10. 5分钟部署ELK+filebeat5.1.1

    标题有点噱头,不过网络环境好的情况下也差不多了^_^   1. 首先保证安装了jdk.   elasticsearch, logstash, kibana,filebeat都可以通过yum安装,这里前 ...