計算: c[
k]=∑
k≤ia[i]
∗b[i
−k])
正好看到《具體數學》上處理和式的tricks,雖然熱身題也不會做,但碾oi題還是很穩的(orz神犇高教授)…
對於:∑k≤
ia[i]
∗b[i
−k])
將b陣列倒置,即b[
i]=b
′[n−
1−i]
,原式變為:c[
k]=∑
0≤i0≤n+
k−1−
ia[i]
∗b′[
n+k−
1−i]
) 化簡得到c[
k]=∑
k≤i≤
n+k−
1(a[
i]∗b
′[n+
k−1−
i])
我們想得到形如c′
[k]=
∑0≤i
≤ka[
i]∗b
′[k−
i]的形式。只需要將後式中的
k 用k+
n−1替換:c′
[k+n
−1]=
∑ia[
i]∗b
′[k+
n−1−
i]條件是0≤
k+n−
1−ik≤i≤
n+k−
1 所以c
[k]=
c′[k
+n−1
]=∑k
≤i≤n
+k−1
a[i]
∗b′[
k+n−
1−i]
然後用卷積做就好了。
#include
using
namespace
std;
typedef
complex
complex;
const
int maxn = 300005;
int rev[maxn];
complex a[maxn];
complex a[maxn], b[maxn], c[maxn];
int n;
void fft(complex a, int n, int flag)}}
for (int i = 0; i < n; i++)
a[i] = a[i]/complex(flag==1?1:n,0);
}int main()
int nn = 1;
while (nn < n*2) nn <<= 1;
fft(a, nn, 1), fft(b, nn, 1);
for (int i = 0; i < nn; i++) c[i] = a[i]*b[i];
fft(c, nn, -1);
for (int i = 0; i < n; i++) printf("%d\n", int(c[i+n-1].real()+0.01));
return
0;}
給定乙個ab串,求所有不連續回文子串行的數量和。
由於卷積可以處理關於乙個對稱軸兩側對稱的字元總數,因此將串中的a、b變為0、1,自己和自己做卷積,就可以求出所有對稱軸下b所對應數對稱的字元總數。然後把a、b變為1、0,求出a的結果,相加即為關於對稱軸兩邊對稱的總字元數ai
,則2a
i 就是關於其對稱的字串總數。
那麼如何去除連續的呢?跑一遍manacher就好了。複雜度o(
nlgn)
#include
using namespace std;
const int maxn = 300005;
typedef complex complex;
int rev[maxn];
complex a[maxn];
const long
long
mod = 1000000007ll;
void fft(complex a, int n, int flag)}}
for (int i = 0; i < n; i++)
a[i] = a[i]/(flag == 1?1:complex(n,0));
}int p[maxn];
long
long manacher(char
str, int n)
ans--;
id = mx = 0;
for (int i = 1; i < n; i++)
return ans;
}long
long power(int a, int n)
char
str[maxn];
complex a[maxn], c[maxn];
int cp[maxn];
int main()
倍增的兩道應用題(題解報告)
題目鏈結 題意 題意不難看懂,就是要求兩點間道路中最大權值的最小值 思路 這道題有很多種解法,這裡講利用lca的解法 首先我們知道,解肯定是建立在最大生成樹上的 先用kruscal建最大生成樹 然後再在lca中維護乙個d u,v 表示從節點u走到節點v經過的道路的最小權重 然後就可以上 了 ac i...
益智題 (簡單的兩道題)
a公司拍攝的 黃河頌 獲最佳故事獎 b公司的 孫悟空 獲最佳武術獎 c公司的 白娘子 獲最佳戲劇獎。a公司的經理說 我們三經理的姓分別是三部片名的第乙個字,而又同自己所拍 首字不一樣。另一公司的孫經理笑著說 真是這樣 那三經理各姓什麼?答案 a白 b黃 c孫 另一公司的孫經理 說明a不姓孫,而a又不...
兩道題題引發的思考
下週的討論課又到我講 了,這幾天都在看 準備ppt,選了一篇好難的 啊,看了這麼久了,還是不夠清晰。所以決定先換下思路,做點題。下面的 輸出是什麼 void add int p add p int main 分析這個題目看起來還是比較友好的。首先我們來分析一下add 函式。其實看名字就能知道它是在做...