1. 程式人生 > >hdu 6143 Killer Names(第二類斯特林數)

hdu 6143 Killer Names(第二類斯特林數)

生活總是那麼操蛋,(a+b)%mod寫成了(a+b%mod),找錯找了一個多小時。。這裡寫圖片描述
思路:
m種字元,名字分兩部分,都能放下n個字元。先取出名字的一部分,即n個位置。對於這n個位置,能放i種字元,i屬於[1, min(m,n)],就是n個元素放進k個盒子裡,並且盒子不同,所以要乘階乘,這對應第二類斯特林數,對於某個i,共CimS[n][i]fac[i]種情況,剩下m-i個字元就放到名字的另一部分,方法同上。

#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const LL mod = 1
e9+7; const int MAXN = 2010; LL S[MAXN][MAXN]; LL C[MAXN][MAXN]; LL Fac[MAXN]; void init() { Fac[0] = 1; C[0][0] = 1; S[0][0] = 0; for(LL i = 1; i < MAXN; ++i) { Fac[i] = (Fac[i-1]*i)%mod; S[i][i] = 1; S[i][0] = 0; C[i][i] = 1; C[i][0] = 1; for
(LL j = 1; j < i; ++j) { C[i][j] = (C[i-1][j] + C[i-1][j-1])%mod; S[i][j] = (S[i-1][j-1] + j*S[i-1][j])%mod; } } } int main() { init(); int T,n,m; scanf("%d",&T); while(T--) { LL res = 0,half; int h1,h2; scanf("%d
%d"
,&n,&m); for(int i = 1; i < m && i <= n; ++i) { h1 = i; half = (C[m][i]*S[n][i])%mod*Fac[i]%mod; h2 = m-i; for(int j = 1; j <= h2 && j <= n; ++j) res = (res + ((C[h2][j]*S[n][j]%mod)*Fac[j]%mod)*half%mod)%mod; } printf("%lld\n",res); } return 0; }

相關推薦

hdu 6143 Killer Names第二

生活總是那麼操蛋,(a+b)%mod寫成了(a+b%mod),找錯找了一個多小時。。 思路: m種字元,名字分兩部分,都能放下n個字元。先取出名字的一部分,即n個位置。對於這n個位置,能放i種字元,

HDU 6143 Killer Names 第二or容斥

> Galen Marek, codenamed Starkiller, was a male Human apprentice of the Sith Lord Darth Vader. A powerful Force-user who lived during the era of the Ga

CF932E Team Work第二

clas open targe ostream res 題解 return sca const 求$\sum_{i=1}^nC_{n}^i*i^k$ 題解 1 //minamoto 2 #include<iostream> 3 #incl

Examining the Rooms HDU - 3625第一

names can pre main bits ons pro div spa Examining the Rooms HDU - 3625 題意:n個房間,每個房間裏有一把鑰匙(等概率),每進到一個房間可以得到鑰匙去該鑰匙對應的房間,如果當前沒有鑰匙則可以破門而入(1

【BZOJ4555】求和第二,組合數學,NTT

name can efi fin def mes %d str ostream 【BZOJ4555】求和(第二類斯特林數,組合數學,NTT) 題面 BZOJ 題解 推推柿子 \[\sum_{i=0}^n\sum_{j=0}^iS(i,j)·j!·2^j\] \[=\sum_

【BZOJ5093】圖的價值第二,組合數學,NTT

ble math n) .cn fin eve 都是 max online 【BZOJ5093】圖的價值(第二類斯特林數,組合數學,NTT) 題面 BZOJ 題解 單獨考慮每一個點的貢獻: 因為不知道它連了幾條邊,所以枚舉一下 \[\sum_{i=0}^{n-1}C_{n-

HDU 2512 一卡通大冒險(第二+貝爾)

題目連結:http://acm.hdu.edu.cn/showproblem.php?pid=2512 題目大意:因為長期鑽研演算法, 無暇顧及個人問題,BUAA ACM/ICPC 訓練小組的帥哥們大部分都是單身。某天,他們在機房商量一個絕妙的計劃"一卡通大冒險"。這個計劃是由wf最先提出來的,計劃的內容是

P4091 [HEOI2016/TJOI2016]求和第二+NTT

傳送門 首先,因為在\(j>i\)的時候有\(S(i,j)=0\),所以原式可以寫成\[Ans=\sum_{i=0}^n\sum_{j=0}^nS(i,j)\times 2^j\times j!\] \[Ans=\sum_{j=0}^n2^j\times j!\sum_{i=0}^nS(i,j)\]

bzoj5093:圖的價值第二+NTT

傳送門 首先,題目所求為\[n\times 2^{C_{n-1}^2}\sum_{i=0}^{n-1}C_{n-1}^ii^k\] 即對於每個點\(i\),列舉它的度數,然後計算方案。因為有\(n\)個點,且關於某個點連邊的時候剩下的邊都可以隨便連,所以有前面的兩個常數 所以真正要計算的是\[\sum_{

P4827 [國家集訓隊] Crash 的文明世界第二+樹形dp

傳送門 對於點\(u\),所求為\[\sum_{i=1}^ndis(i,u)^k\] 把後面那堆東西化成第二類斯特林數,有\[\sum_{i=1}^n\sum_{j=0}^kS(k,j)\times j!\times{dis(i,u)\choose j}\] \[\sum_{j=1}^nS(k,j)\tim

[BZOJ2159]Crash 的文明世界第二 + 樹形 DP

Address 洛谷 P4827 BZOJ 2159 Solution 好久沒寫部落格了,來水一篇 發現一個困難: d

CF960G Bandit Blues第一

傳送門 可以去看看litble巨巨關於第一類斯特林數的總結 設\(f(i,j)\)為\(i\)個數的排列中有\(j\)個數是字首最大數的方案數,列舉最小的數的位置,則有遞推式\(f(i,j)=f(i-1,j-1)+(i-1)\times f(i-1,j)\) 這個就是第一類斯特林數 第一類斯特林數中\

hdu 2643 rank 第二

ini using cout cin type log ios cnblogs sum 題意:給定n個人,要求這n個人的所有可能排名情況,可以多個人並列(這個是關鍵)。 題解:由於存在並列的問題,那麽對於n個人,我們最多有n個排名,枚舉一下1~n,累加一下就好。(註意這裏是

新疆大學新大OJ xju 1006: 比賽排名 第二+階乘

bds 思路 jpg stat cin idt line main enter 題目鏈接:http://139.129.36.234/JudgeOnline/problem.php?id=1006 第二類斯特林數: 第二類Stirling數實際上是集合的一個拆分,表示將

BZOJ 2159: Crash 的文明世界樹形dp+第二+組合數

tchar cpp def tmp %d ifdef gpo 組合數 const 題意: 給定一棵 \(n\) 個點的樹和一個常數 \(k\) , 對於每個 \(i\) , 求 \[\displaystyle S(i) = \sum _{j=1} ^ {n} \math

學習筆記第十六節:第一類,第二和Bell

正題       百度:“       在組合數學,Stirling數可指兩類數,第一類Stirling數和第二類Stirling數,都是由18世紀數學家James Stirling提出的。   

【CF 140E】New Year Garland第二(Stirling)+DP+容斥

As Gerald, Alexander, Sergey and Gennady are already busy with the usual New Year chores, Edward hastily decorates the New Year Tree. And any decent New Ye

Gym Gym 101147G 第二

event for cnblogs color ide hide col problem pan 題目鏈接:http://codeforces.com/gym/101147/problem/G 題意:n個人,去參加k個遊戲,k個遊戲必須非空,有多少種放法? 分析: 第二

HDU4045-第二

clu math cnblogs mat tin ring tdi [0 ios 題意 有n臺機器,每天選擇r臺,要求任意兩臺編號差值不小於k,並且r臺機器分成不超過m組。求不重樣的選擇有多少種組合(可以選多少天)。 數據範圍$1\leqslant n,r,k,m\leqs

【模板】第二Stirling

pre ble 出發 ati val span 兩種 定義 技術 第二類Stirling數實際上是集合的一個拆分,表示將n個不同的元素拆分成m個集合的方案數,記為 或者 。 第二類Stirling數的推導和第一類Stirling數類似,可以從定義出發考慮第n+1個元