A1255. 拉拉队排练(陶文博)
时间限制:1.0s   内存限制:512.0MB  
总提交次数:   AC次数:   平均分:
 
将本题分享到:
      
试题来源
  2011中国国家集训队命题答辩
问题描述
  艾利斯顿商学院篮球队要参加一年一度的市篮球比赛了。拉拉队是篮球比赛的一个看点,好的拉拉队往往能帮助球队增加士气,赢得最终的比赛。所以作为拉拉队队长的楚雨荨同学知道,帮助篮球队训练好拉拉队有多么的重要。
  拉拉队的选拔工作已经结束,在雨荨和校长的挑选下,n集优秀的身材、舞技于一体的美女从众多报名的女生中脱颖而出。这些女生将随着篮球队的小伙子们一起,和对手抗衡,为艾利斯顿篮球队加油助威。
  一个阳光明媚的早晨,雨荨带领拉拉队的队员们开始了排练。n个女生从左到右排成一行,每个人手中都举了一个写有26个小写字母中的某一个的牌子,在比赛的时候挥舞,为小伙子们呐喊、加油。
  雨荨发现,如果连续的一段女生,有奇数个,并且他们手中的牌子所写的字母,从左到右和从右到左读起来一样,那么这一段女生就被称作和谐小群体
  现在雨荨想找出所有和谐小群体,并且按照女生的个数降序排序之后,K和谐小群体的女生个数的乘积是多少。由于答案可能很大,雨荨只要你告诉她,答案除以19930726的余数是多少就行了。
输入格式
  输入为标准输入。
  第一行为两个正整数nK,代表的东西在题目描述中已经叙述。
  接下来一行为n个字符,代表从左到右女生拿的牌子上写的字母。
输出格式
  输出为标准输出。
  输出一个整数,代表题目描述中所写的乘积除以19930726的余数,如果总的和谐小群体个数小于K,输出一个整数-1。
样例输入
5 3
ababa
样例输出
45
样例说明
  和谐小群体女生所拿牌子上写的字母从左到右按照女生个数降序排序后为ababa, aba, aba, bab, a, a, a, b, b,前三个长度的乘积为 。
数据规模和约定
  总共20个测试点,数据范围满足:

测试点 n K
1 10 10
2 100 100
3 100 100
4 1,000 1,000
5 1,000 1,000
6 1,000 1,000
7 1,000 1,000
8 100,000 = 1
9 100,000 100,000
10 100,000 100,000
11 100,000 100,000
12 100,000 1,000,000,000,000
13 100,000 1,000,000,000,000
14 100,000 1,000,000,000,000
15 500,000 1,000,000,000,000
16 500,000 1,000,000,000,000
17 500,000 1,000,000,000,000
18 1,000,000 = 1
19 1,000,000 1,000,000
20 1,000,000 1,000,000,000,000
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define maxn 1000010
#define mod 19930726
using namespace std;
char s[maxn];
int fail[maxn],nxt[maxn][],str[maxn],len[maxn],cnt[maxn],sz=-,last,n;
int creat(int l){
len[++sz]=l;
return sz;
}
void prepare(){
creat();
creat(-);
last=;
str[]=str[]=-;
fail[]=;
}
int getfail(int x){
while(str[n-len[x]-]!=str[n])x=fail[x];
return x;
}
void Insert(int c){
str[++n]=c;
int cur=getfail(last),now;
if(!nxt[cur][c]){
now=creat(len[cur]+);
fail[now]=nxt[getfail(fail[cur])][c];
nxt[cur][c]=now;
}
last=nxt[cur][c];
cnt[last]++;
}
void count(){
for(int i=sz;i>=;i--)cnt[fail[i]]+=cnt[i];
}
struct node{
int v,num;
bool operator < (const node &b)const{
return v>b.v;
}
}a[maxn];
int tot;
long long Pow(int x,int y){
long long res=;
while(y){
if(y&)res=res*x%mod;
x=1LL*x*x%mod;
y>>=;
}
return res;
}
int main(){
prepare();
long long k;cin>>k>>k;
scanf("%s",s);
int l=strlen(s);
for(int i=;i<l;i++)Insert(s[i]-'a');
count();
for(int i=;i<=l+;i++){
if(len[i]%==)continue;
tot++;
a[tot].v=len[i];a[tot].num=cnt[i];
}
sort(a+,a+tot+);
long long sum=,ans=;
bool flag=;
for(int i=;i<=tot;i++){
if(sum+a[i].num>k){
ans=ans*Pow(a[i].v,k-sum)%mod;
flag=;
break;
}
ans=ans*Pow(a[i].v,a[i].num)%mod;
sum+=a[i].num;
}
if(!flag)puts("-1");
else cout<<ans;
return ;
}

青橙 A1255. 拉拉队排练(陶文博)的更多相关文章

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

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

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

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

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

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

  4. 青橙 A1280. 最长双回文串

    A1280. 最长双回文串 时间限制:2.0s   内存限制:512.0MB   总提交次数:   AC次数:   平均分:   将本题分享到:        查看未格式化的试题   提交   试题讨 ...

  5. BZOJ_2160_拉拉队排练_manacher

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

  6. 青橙 M4 解锁BootLoader 并刷入recovery ROOT

    首先下载工具链接:https://pan.baidu.com/s/1o9xzTEi密码:7s7a 备用连接:https://pan.baidu.com/s/1bq47TMn 本篇教程教你如何傻瓜式解锁 ...

  7. 【青橙商城-管理后台开发】3. web模块搭建

    [青橙商城-管理后台开发]3. web模块搭建 1.创建qingcheng_web_manager模块 pom.xml <?xml version="1.0" encodin ...

  8. bzoj2160拉拉队排练

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

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

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

随机推荐

  1. oracle的自增长

    mysql的自增长非常容易,一个 AUTO_INCREMENT 就搞定,可是oracle就不行了 下面是oracle的自增长 #创建一个表CREATE TABLE T_TEST_DEPARTMENTS ...

  2. Thread之一:线程生命周期及五种状态

    <Thread之一:线程生命周期及五种状态> <juc线程池原理(四): 线程池状态介绍> 一.线程的生命周期及五种基本状态 关于Java中线程的生命周期,首先看一下下面这张较 ...

  3. SpringMVC 之URL请求到Action的映射(1)

    URL路径映射 1.1.对一个action配置多个URL映射: @RequestMapping(value={"/index", "/hello"}, meth ...

  4. Python函数(十)-装饰器(三)

    如果多个函数想通过一个装饰器来实现不同的功能的话,可以给装饰器传入参数,让装饰器里的函数对参数进行判断,来实现不同的功能 # -*- coding:utf-8 -*- __author__ = &qu ...

  5. List转Datable(需区分对象充当List成员和数组充当List成员两种情况)

    对象充当List成员时: /// <summary> /// 将泛类型集合List类转换成DataTable /// </summary> /// <param name ...

  6. redis学习二 排序

    文章转载自:http://www.cnblogs.com/redcreen/archive/2011/02/15/1955226.html redis支持对list,set和sorted set元素的 ...

  7. oracle常用函数总结(一)

    最近在读数据库存储过程,或者在xml里写sql时用到数据库函数,笔者觉得有必要总结一下,当然有的函数笔者也很懵逼,不过可以问度娘啊!好了!开始正题. )s from dual;--1 若nvl第一个参 ...

  8. IDEA中Git实战

    工作中多人使用版本控制软件协作开发,常见的应用场景归纳如下: 假设小组中有两个人,组长小张,组员小袁 场景一:小张创建项目并提交到远程Git仓库 场景二:小袁从远程Git仓库上获取项目源码 场景三:小 ...

  9. springboot整合mybatis+generator

    源码地址:springboot-integration 如果你觉得解决了你使用的需求,欢迎fork|star.

  10. import random随机生成验证码

    #!/usr/bin/env python import random temp = "" for i in range(6): num = random.randrange(0, ...