NOI2016 優秀的拆分 95分

2021-08-06 06:57:02 字數 667 閱讀 8810

uoj 傳送門

題目大意:給出一串字串,求它的子串中形如aabb的方案個數。

90% len<=2000 ,o(n^2) 的做法可以過。

100% len<=30000, 蒟蒻不會啦。

o(n^2)的做法:

列舉中間點,求出兩邊形如aa的個數,相乘加入答案中。

#include

#include

#include

#include

#include

#define ll long long

#define mod 1000000009

#define base 163

#define m 30009

using

namespace

std;

int t,len;

ll hash[m],p[m],ans;

char a[2009];

ll get_hash(int l,int r)

int main()

for(int j=(len-i)/2;j;j--)

ans+=l*r;

}printf("%lld\n",ans);

}return

0;}

NOI2016 優秀的拆分 95分

uoj 傳送門 題目大意 給出一串字串,求它的子串中形如aabb的方案個數。90 len 2000 o n 2 的做法可以過。100 len 30000,蒟蒻不會啦。o n 2 的做法 列舉中間點,求出兩邊形如aa的個數,相乘加入答案中。include include include include...

NOI2016 優秀的拆分

看到題目,資料範圍有點怪異。對於95 的資料,對於100 的資料,意思是只有5分是正解。好吧,95pts的 很明顯,答案就是 而如何才能拿到100pts呢?我們可以先列舉a段的長度,很明顯每個長度為lcp,與往後求lcs,若 這樣就可以通過 include include include inclu...

NOI2016 優秀的拆分

題目實際上要求我們求從每個點出發的aa串的數量 考慮點i的答案,發現如果字首i與字首j j i 的最長公共字尾 i j,那麼i點出發向前就存在乙個長度為i j的aa串,題目即求對於每個字首,有多少個在他之前的字首滿足條件 考慮字尾自動機,由於每個字首都是字尾自動機parent樹上的一點,即兩個字首的...