<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      題解:P6162 [Cnoi2020] 四角鏈

      傳送門

      絕大多數的計數題都可以用 dp 和容斥解決。

      本題的 dp 比較好想,設 \(f_{i,j}\) 表示前 \(i\) 個位置填了 \(j\) 個數。考慮如果第 \(i\) 個位置不填,則貢獻是 \(f_{i-1,j}\);否則前面 \(i-1\) 個位置一共填了 \(j-1\) 個數,由于第 \(i\) 個位置可以填 \(1\sim i\),則第 \(i\) 個位置有 \(i-j+1\) 種填的方法,貢獻是 \((i-j+1)f_{i-1,j-1}\)。那么有狀態轉移方程:

      \[f_{i,j}=f_{i-1,j}+(i-j+1)\times f_{i-1,j-1} \]

      我們先把 \(i,j\) 用題目中的 \(n,k\) 替換一下,得到:

      \[f_{n,k}=f_{n-1,k}+(n-k+1)\times f_{n-1,k-1} \]

      再用 \(n-k+1\) 代換掉 \(k\),得到:

      \[f_{n,n-k+1}=f_{n-1,n-k+1}+k\times f_{n-1,n-k} \]

      \(S_{n,k}=f_{n,n-k+1}\),得到:

      \[S_{n,k}=S_{n-1,k-1}+k\times S_{n-1,k} \]

      這就是第二類 Stirling 數的遞推式,因此答案是 \(\begin{Bmatrix}n\\n-k\end{Bmatrix}\),直接用通項公式計算即可:

      \[\begin{Bmatrix}n\\m\end{Bmatrix}=\sum_{i=0}^m\frac{(-1)^i(m-i)^n}{i!(m-i)!}\Rightarrow\begin{Bmatrix}n\\{n-k}\end{Bmatrix}=\sum_{i=0}^{n-k}\frac{(-1)^i(n-k-i)^n}{i!(n-k-i)!} \]

      我們還可以用另一種方法推導出本題的答案,考慮下面關于 \(n=6,k=3\) 的填數方案(第一行代表位置,第二行代表所填的數,不填的位置假設填 \(0\)):

      \(1\) \(2\) \(3\) \(4\) \(5\)
      \(0\) \(1\) \(2\) \(0\) \(4\)

      我們給這個數表加一個表頭,再在 \(i=1\) 的列前面加一個 \(i=0\) 的列(因為原題中 \(n\) 這個數對答案不產生貢獻,所以這里其實是把多出來的那個 \(n\) 等價替換成數表最前面的 \(0\)):

      \(i\) \(0\) \(1\) \(2\) \(3\) \(4\) \(5\)
      \(fa_i\) \(0\) \(0\) \(1\) \(2\) \(0\) \(4\)

      注意到按該表連邊之后形成的圖是一棵以 \(0\) 為根節點、根節點的 \(n-k-1\) 棵子樹形態均為鏈的樹。

      證明:由于一共填 \(k\) 個數,也即有 \(n-k-1\) 個數沒有填,在該表中表現為填了 \(n-k-1\)\(0\),因此若以 \(0\) 為根節點,則根節點有 \(n-k-1\) 棵子樹。同時因為不允許填重復的數,所以除了根節點以外,其它節點最多只有一棵子樹,因此這些根節點的子樹形成了鏈狀結構。

      那么現在問題等價轉化為:將 \(1\sim n-1\)\(n\) 個數有祖孫關系地掛在 \(n-k-1\) 條鏈上的方案數。再等價轉化一步,即將 \(1\sim n-1\)\(n-1\) 個數劃分為 \(n-k-1\) 個互不區分的非空子集方案數。再用 \(n\) 代換掉 \(n-1\),即將 \(1\sim n\)\(n\) 個數劃分為 \(n-k\) 個互不區分的非空子集方案數。

      這就是第二類 Stirling 數的定義,因此答案為 \(\begin{Bmatrix}n\\n-k\end{Bmatrix}\)

      #include <bits/stdc++.h>
      #define int long long
      using namespace std;
      const int mod = 998244353, N = 1e6 + 10;
      int n, k;
      int qpow (int a, int b) {
      	int res = 1;
      	for (; b; b >>= 1, a = a * a % mod)
      		if (b & 1)
      			res = res * a % mod;
      	return res;
      }
      int fac[N], inv[N];
      void init () {
      	fac[0] = 1;
      	for (int i = 1; i <= n; ++i)
      		fac[i] = fac[i - 1] * i % mod;
      	inv[n] = qpow(fac[n], mod - 2);
      	for (int i = n; i; --i)
      		inv[i - 1] = inv[i] * i % mod;
      }
      int S (int n, int m) {
      	int res = 0;
      	for (int i = 0; i <= m; ++i)
      		res = (res + qpow(m - i, n) * inv[i] % mod * inv[m - i] % mod * ((i & 1) ? -1 : 1) + mod) % mod;
      	return res;
      }
      signed main () {
      	cin >> n >> k, init(), cout << S(n, n - k);
      	return 0;
      }
      
      posted @ 2025-10-07 20:59  JohnYam  閱讀(7)  評論(1)    收藏  舉報
      主站蜘蛛池模板: 肥臀浪妇太爽了快点再快点 | 内射干少妇亚洲69XXX| 欧美性群另类交| 国产一区二区三区在线观| 痉挛高潮喷水av无码免费 | 亚洲最大在线精品| 亚洲18禁一区二区三区| 亚洲国内精品一区二区| 久久精品国产亚洲夜色av网站| 麻豆精产国品一二三区区| 欧美xxxx做受欧美.88| 凤山市| 国产又色又爽又黄的| 国产三级精品三级在线看| 二区中文字幕在线观看| 黄色亚洲一区二区在线观看| 精品无码一区二区三区的天堂| 国产精品成人综合色在线| 午夜高清福利在线观看| 99视频偷窥在线精品国自产拍| 亚洲最大天堂在线看视频| 好先生在线观看免费播放| 麻豆精品在线| 亚洲国产欧美一区二区好看电影| 国产精品一码在线播放| 国产精品白浆无码流出| 2020国产欧洲精品网站| 女子spa高潮呻吟抽搐| 亚洲AV无码国产成人久久强迫| 国产95在线 | 欧美| 九九热中文字幕在线视频| 四虎库影成人在线播放| 亚洲欧美日韩国产精品一区二区 | 人妻少妇精品中文字幕| 天堂V亚洲国产V第一次| 久视频久免费视频久免费| 免费看成人aa片无码视频吃奶| 97人妻精品一区二区三区| 国产亚洲无线码一区二区| 97人妻无码一区| 国产免费人成网站在线播放|