弱省互測 0 t1

2021-09-07 03:47:56 字數 811 閱讀 2157

給乙個\(n \times m\)的01網格,1不能走,從起點\((1, 1)\)走到\((n, m)\),每次只能向下或向右走一格,問兩條不相交的路徑的方案數。(n, m<=1000)

先考慮一條,再考慮去掉相交的情況。

令\(d(a, b, c, d)\)表示從\((a, b)\)走到\((c, d)\)一條路徑的方案數,則可以簡單得到答案:

\[ans = d(2, 1, n, m-1) + d(1, 2, n-1, m) - t\]

我們來考慮任意兩條相交路徑。

令\(p\)表示這些交點最下最右的點。那麼我們將後面那一段路徑換一下,也就是原來我往下,現在我往右,原來往右,現在往下。

發現其實這就是\(d(2, 1, n-1, m) + d(1, 2, n, m-1)\)

於是我們減掉後者即可。

#include using namespace std;

const int mo=1e9+7;

int n, m;

char s[2005][2005];

int d[2][2005][2005];

int main()

d[0][1][1]=d[1][1][1]=1;

for(int i=1; i<=n; ++i)

}if(i!=1) }}

}}

printf("%lld\n", (1ll*d[0][n][m-1]*d[1][n-1][m]%mo-1ll*d[0][n-1][m]*d[1][n][m-1]%mo+mo)%mo);

return 0;

}

弱省互測 0 t3

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

弱省互測 0 t2

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

弱省互測 2 t3

給出 n 個01位元組和 m 個01位元組,要求用後者去匹配前者,兩個串能匹配當且僅當除了每個位元組末位不同,其他位都要相同。問匹配後者至少有多少個末位不同。1 le m le n le 2.5 times 10 5 首先我們可以用kmp計算出能匹配的位置,然後單獨考慮末位不同的情況。我們將末尾的位...