P1659 國家集訓隊 拉拉隊排練

2022-03-04 21:12:47 字數 2231 閱讀 8098

艾利斯頓商學院籃球隊要參加一年一度的市籃球比賽了。拉拉隊是籃球比賽的乙個看點,好的拉拉隊往往能幫助球隊增加士氣,贏得最終的比賽。所以作為拉拉隊隊長的楚雨蕁同學知道,幫助籃球隊訓練好拉拉隊有多麼的重要。

拉拉隊的選拔工作已經結束,在雨蕁和校長的挑選下,n位集優秀的身材、舞技於一體的美女從眾多報名的女生中脫穎而出。這些女生將隨著籃球隊的小夥子們一起,和對手抗衡,為艾利斯頓籃球隊加油助威。

乙個陽光明媚的早晨,雨蕁帶領拉拉隊的隊員們開始了排練。n個女生從左到右排成一行,每個人手中都舉了乙個寫有26個小寫字母中的某乙個的牌子,在比賽的時候揮舞,為小夥子們吶喊、加油。

雨蕁發現,如果連續的一段女生,有奇數個,並且他們手中的牌子所寫的字母,從左到右和從右到左讀起來一樣,那麼這一段女生就被稱作和諧小群體。

現在雨蕁想找出所有和諧小群體,並且按照女生的個數降序排序之後,前k個和諧小群體的女生個數的乘積是多少。由於答案可能很大,雨蕁只要你告訴她,答案除以19930726的餘數是多少就行了。

輸入格式:

輸入為標準輸入。

第一行為兩個正整數n和k,代表的東西在題目描述中已經敘述。

接下來一行為n個字元,代表從左到右女生拿的牌子上寫的字母。

輸出格式:

輸出為標準輸出。

輸出乙個整數,代表題目描述中所寫的乘積除以19930726的餘數,如果總的和諧小群體個數小於k,輸出乙個整數-1。

輸入樣例#1:

5 3

ababa

輸出樣例#1:

45

樣例說明

和諧小群體女生所拿牌子上寫的字母從左到右按照女生個數降序排序後為ababa, aba, aba, bab, a, a, a, b, b,前三個長度的乘積為 。

資料範圍與約定

測試點nk1

1010

2-3100

1004-7

1,000

1,000

8100,000

= 19-11

100,000

100,000

12-14

100,000

1,000,000,000,000

15-17

500,000

1,000,000,000,000

181,000,000

= 119

1,000,000

1,000,000

201,000,000

1,000,000,000,000

solution:

既然剛學了「馬拉車」,於是打道題練手,發現洛谷除了模板就這一道manacher的題了,看來馬拉車果然很冷門啊!

閒話少說,說下思路。

本題我們發現其實就是給定乙個長度為n的字串和乙個k,求前k個長度為奇數的回文子串的長度乘積,不足k個就輸出-1。

演算法就是manacher+快速冪,因為只需要長度為奇數的回文子串,於是不需要構造新串,在求每個中心的最長回文子串半徑時,將出現過的半徑值都用乙個桶來統計,因為長度最長為n(≤1,000,000),所以不會有問題。輸出時,從離n最近的奇數列舉到1出現的奇數,由於k很大而且相同的數可能有很多重複,於是對於每個桶中的數直接快速冪求乘積,然後相應的將k減小,知道已經累乘過的數的個數大於等於k就跳出迴圈。輸出時判斷一下就ok了。

**:

#include#define il inline

#define ll long long

#define debug printf("%d %s\n",__line__,__function__)

using

namespace

std;

const

int n=1000050,mod=19930726

;ll p[n],sum,tot[n];

ll n,k,ans=1

;char

s[n];

il ll fast(ll x,ll k)

return

ans;

}il

void

manacher()

}int

main()

else

}if(sum1;return0;}

cout

}

BZOJ 2160 拉拉隊排練

time limit 10 sec memory limit 259 mb submit 832 solved 326 submit status discuss 艾利斯頓商學院籃球隊要參加一年一度的市籃球比賽了。拉拉隊是籃球比賽的乙個看點,好的拉拉隊往往能幫助球隊增加士氣,贏得最終的比賽。所以作為...

bzoj2160 拉拉隊排練

神犇曰 這道題不就是manacher裸題麼,隨便切一切吧 我 manacher是個啥。我只會hash啊。看完manacher教程後 嗯?這都是個卵啊。我去寫hash吧。於是hash的pow陣列寫掛了。一直在wa。終於a掉了。正著hash一遍然後反著hash一遍,最後暴力二分就ok。就醬紫。1 inc...

BZOJ2160 拉拉隊排練

艾利斯頓商學院籃球隊要參加一年一度的市籃球比賽了。拉拉隊是籃球比賽的乙個看點,好的拉拉隊往往能幫助球隊增加士氣,贏得最終的比賽。所以作為拉拉隊隊長的楚雨蕁同學知道,幫助籃球隊訓練好拉拉隊有多麼的重要。拉拉隊的選拔工作已經結束,在雨蕁和校長的挑選下,n位集優秀的身材 舞技於一體的美女從眾多報名的女生中...