用 Manacher 跑出回文串长,注意这里不需要偶数长度所以不需要对串做一些奇怪的处理

然后用前缀和搞一下,计算答案时跑快速幂即可

#include <bits/stdc++.h>
using namespace std;
#define int long long
#define ll long long
namespace man {
const int N = 1100005;
char str[N], s[N<<1];
int a[N<<1]; int manacher(int len){
a[0] = 0;
int ans = 0, j;
for(int i = 0; i < len; ){
while(i-a[i]>0 && s[i+a[i]+1]==s[i-a[i]-1]) a[i]++;
if(ans < a[i])ans = a[i];
j = i+1;
while(j<=i+a[i] && i-a[i]!=i+i-j-a[i+i-j]){
a[j] = min(a[i+i-j], i+a[i]-j);
j++;
}
a[j] = max(i+a[i]-j, 0ll);
i = j;
}
return ans;
} int solve(){
int len;
len = strlen(str);
for(int i=0;i<len;i++) s[i]=str[i];
return manacher(len);
}
}
const int N = 1000005;
const int modulo = 19930726;
int qpow(int p,int q) {
ll r = 1;
for(; q; p*=p, p%=modulo, q>>=1) if(q&1) r*=p, r%=modulo;
return r;
}
int n,k,a[N];
signed main() {
scanf("%lld%lld%s",&n,&k,man::str);
man::solve();
for(int i=0;i<n;i++) {
a[man::a[i]]++;
}
for(int i=N-2;i>=0;--i) a[i]+=a[i+1];
int ans=1;
for(int i=N-2;i>=0;--i) {
ans*=qpow(i*2+1,min(a[i],k));
ans%=modulo;
k-=min(a[i],k);
}
cout<<ans;
}

最新文章

  1. CSS3与页面布局学习总结(五)——Web Font与Sprite
  2. bootstrap之HTML模板
  3. Ubuntu:我不小心把/var/lock文件夹给删了
  4. spring mvc 通过配置xml访问控制器的三种方式
  5. 多线程问题(JVM重排序)
  6. 【POJ2739】Sum of Consecutive Prime Numbers
  7. Linq实现t-Sql的各种连接
  8. 基于C++11线程池
  9. json处理三部曲之第二曲:利用Jackson处理json
  10. DotNet友元程序集解析
  11. 开始学习yii2第一天
  12. MFC简单绘制安卓机器人
  13. [NOIP2009] 靶形数独 骚气的大爆搜
  14. mysql 零碎笔记
  15. JSON.Net 自定义Json序列化时间格式
  16. ESP8266天线问题
  17. 【转】深入分析 Parquet 列式存储格式
  18. npm run dev--The &#39;mode&#39; option has not been set, webpack will fallback to &#39;production&#39; for this value
  19. ubantu下安装pip,python,pycharm,numpy,scipy,matplotlibm,pandas 以及sklearn
  20. ES6 用Promise对象实现的 Ajax 操作

热门文章

  1. for遍历用例数据时,报错:TypeError: list indices must be integers, not dict,&#39;int&#39; object is not iterable解决方法
  2. html5之table嵌入form表单布局(务必注意:table标签必须在form表单内部,不能再form表单外部!)
  3. 移动app
  4. Android布局管理器-使用LinearLayout实现简单的登录窗口布局
  5. 面试官:你用过mysql哪些存储引擎,请分别展开介绍一下
  6. 正规表达式与有限自动机和LEX
  7. mysql必知必会--过 滤 数 据
  8. BUGFIX 09 - 记一次Java中String的split正则表达式匹配 - 引发`OutOfMemoryError: Java heap space`的oom异常 排查及解决 -Java根据指定分隔符分割字符串,忽略在引号里面的分隔符
  9. Java模拟客户端向服务器上传文件
  10. 浅谈python的第三方库——numpy(终)