time limit: 10 sec
memory limit: 259 mb
submit: 832
solved: 326 [
submit][
status][
discuss]
艾利斯頓商學院籃球隊要參加一年一度的市籃球比賽了。拉拉隊是籃球比賽的乙個看點,好的拉拉隊往往能幫助球隊增加士氣,贏得最終的比賽。所以作為拉拉隊隊長的楚雨蕁同學知道,幫助籃球隊訓練好拉拉隊有多麼的重要。拉拉隊的選拔工作已經結束,在雨蕁和校長的挑選下,n位集優秀的身材、舞技於一體的美女從眾多報名的女生中脫穎而出。這些女生將隨著籃球隊的小夥子們一起,和對手抗衡,為艾利斯頓籃球隊加油助威。乙個陽光明媚的早晨,雨蕁帶領拉拉隊的隊員們開始了排練。n個女生從左到右排成一行,每個人手中都舉了乙個寫有26個小寫字母中的某乙個的牌子,在比賽的時候揮舞,為小夥子們吶喊、加油。雨蕁發現,如果連續的一段女生,有奇數個,並且他們手中的牌子所寫的字母,從左到右和從右到左讀起來一樣,那麼這一段女生就被稱作和諧小群體。現在雨蕁想找出所有和諧小群體,並且按照女生的個數降序排序之後,前k個和諧小群體的女生個數的乘積是多少。由於答案可能很大,雨蕁只要你告訴她,答案除以19930726的餘數是多少就行了。
輸入為標準輸入。第一行為兩個正整數n和k,代表的東西在題目描述中已經敘述。接下來一行為n個字元,代表從左到右女生拿的牌子上寫的字母。
輸出為標準輸出。輸出乙個整數,代表題目描述中所寫的乘積除以19930726的餘數,如果總的和諧小群體個數小於k,輸出乙個整數-1。
5 3ababa
45【樣例說明】
和諧小群體女生所拿牌子上寫的字母從左到右按照女生個數降序排序後為ababa, aba, aba, bab, a, a, a, b, b,前三個長度的乘積為。
總共20個測試點,資料範圍滿足:
source
【題目分析】
用manacher演算法求出每一位的回文半徑長度,因為只求奇數長度的串,所以不需要加入特殊字元。o(n)的演算法還是非常快的。然後用快速冪統計一下就好了。
【**】
#include #include #include #include const int mod=19930726;
using namespace std;
char s[1000010];
int r[1000010];
long long n,ans[1000010],maxd=0;
long long answer=1,k;
long long mul(long long a,long long b)
return re;
}inline void manacher()
}long long min(long long a,long long b)
int main()
if (k<=0) break;
}if (k>0) printf("-1\n");
else printf("%lld\n",answer);
}
bzoj2160 拉拉隊排練
神犇曰 這道題不就是manacher裸題麼,隨便切一切吧 我 manacher是個啥。我只會hash啊。看完manacher教程後 嗯?這都是個卵啊。我去寫hash吧。於是hash的pow陣列寫掛了。一直在wa。終於a掉了。正著hash一遍然後反著hash一遍,最後暴力二分就ok。就醬紫。1 inc...
BZOJ2160 拉拉隊排練
艾利斯頓商學院籃球隊要參加一年一度的市籃球比賽了。拉拉隊是籃球比賽的乙個看點,好的拉拉隊往往能幫助球隊增加士氣,贏得最終的比賽。所以作為拉拉隊隊長的楚雨蕁同學知道,幫助籃球隊訓練好拉拉隊有多麼的重要。拉拉隊的選拔工作已經結束,在雨蕁和校長的挑選下,n位集優秀的身材 舞技於一體的美女從眾多報名的女生中...
BZOJ 2160 拉拉隊排練
題目鏈結 演算法 先簡化題意 給定乙個字串,求最長的k個奇回文子串長度的乘積 先執行manacher演算法,對於每個位置i,我們知道以i為中心的回文串的最長半徑為pi,那麼i這個位置對半徑為1 p i 的回文串的個數都產生了1的 貢獻 因此,我們可以用差分求出任意半徑的回文串個數,然後統計答案即可,...