弱省互測 2 t3

2021-09-07 03:47:56 字數 645 閱讀 5636

給出\(n\)個01位元組和\(m\)個01位元組,要求用後者去匹配前者,兩個串能匹配當且僅當除了每個位元組末位不同,其他位都要相同。問匹配後者至少有多少個末位不同。(\(1 \le m \le n \le 2.5 \times 10^5\))

首先我們可以用kmp計算出能匹配的位置,然後單獨考慮末位不同的情況。

我們將末尾的位提取出來,則考慮\(n\)個\(01\)位和\(m\)個\(01\)位。對於模板串的\(01\)位,我們需要計算以這個位置結束與匹配串位相同的數目,發現其實我們將匹配串反轉,然後就是卷積!於是我們就可以用fft做了。

#include using namespace std;

const double pi=acos(-1);

const int n=2.5e5+10, ns=n*8, lim=600006;

int lenn, lenm, lena, lenb, got[lim], rev[lim];

char s1[ns], s2[ns], sa[ns], sb[ns];

vectorpos;

void getkmp()

}printf("yes\n%d %d\n", ans2, ans1+1);

return 0;

}

弱省互測 2 t2

給兩個樹,大小分別為n和m,現在兩棵樹各選一些點 包括1 使得這棵樹以1號點為根同構 同構就是每個點的孩子數目相同 求最大的同構樹。n,m 500 我們從兩棵樹中各取出乙個點,考慮以這兩個點為根能得到的最大同構數。容易得到 設 d i,j 表示第一棵樹選 i 號點,第二棵樹選 j 號點所能得到的最大...

弱省互測 0 t3

要求給出下面 的答案然後構造輸入。給乙個圖,n 個點 m 條邊 q 次詢問,輸出所有點對之間最大權值最小的路徑。把每乙個詢問的輸出看成一條邊,建一棵最小生成樹。給輸出,要求構造輸入使得用所給 執行後得到的輸出和給出的輸出相同。所給 n 次 dijkstra 求兩點間最短路 考慮一下貪心。首先還是把每...

弱省互測 0 t2

給定兩個字串 a 和 b,求下面四個問題的答案 1.在 a 的子串中,不是 b 的子串的字串的數量。2.在 a 的子串中,不是 b 的子串行的字串的數量。3.在 a 的子串行中,不是 b 的子串的字串的數量。4.在 a 的子串行中,不是 b 的子串行的字串的數量。其中子串是指本質不同的子串,不同的位...