日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

新疆大学(新大)OJ xju 1006: 比赛排名 第二类斯特林数+阶乘

發布時間:2024/4/19 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 新疆大学(新大)OJ xju 1006: 比赛排名 第二类斯特林数+阶乘 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目鏈接:http://acm.xju.edu.cn/JudgeOnline/problem.php?id=1006

第二類斯特林數:
第二類Stirling數實際上是集合的一個拆分,表示將n個不同的元素拆分成m個集合的方案數,記為 或者 。

第二類Stirling數的推導和第一類Stirling數類似,可以從定義出發考慮第n+1個元素的情況,假設要把n+1個元素分成m個集合則分析如下:
(1)如果n個元素構成了m-1個集合,那么第n+1個元素單獨構成一個集合。方案數 。
(2)如果n個元素已經構成了m個集合,將第n+1個元素插入到任意一個集合。方案數 m*S(n,m) 。
  綜合兩種情況得:
    

遞推式:dp[i][j] = dp[i-1][j-1]+j*dp[i-1][j];

思路:
這題就是求斯特林數,即將n個隊伍分成i個集合(1 <= i <= n)。
然后對每個集合排序,乘上A(i,i)。也就是i !(i的階乘)。

代碼:

#include<cstdio> #include<cstring> #include<iostream> using namespace std;const int mod = 10056;int dp[1010][1010]; int main() { int t,n;cin >> t;int k = 1;while(t--){cin >> n;dp[0][0] = 1;for(int i = 1;i <= n; i++){for(int j = 1;j <= i; j++){dp[i][j] = (dp[i-1][j-1]+j*dp[i-1][j])%mod;}} int num = 1;int ans = 0;for(int j = 1;j <= n; j++){num = (num * j)%mod;ans = (ans + num*dp[n][j])%mod;}cout << "Case " << k++ << ": ";cout << ans << endl;}return 0; }

總結

以上是生活随笔為你收集整理的新疆大学(新大)OJ xju 1006: 比赛排名 第二类斯特林数+阶乘的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。