牛客國慶集訓派對Day3 H Travel

2021-08-28 17:44:06 字數 1477 閱讀 3166

傳送門

我們以m

mm的兩種情況進行分析:

當m =1

m=1m=

1時:果斷輸出1

11當m

>

1m>1

m>

1時:我們可以用m−1

m-1m−

1條邊,將這n

nn個點組成的圖劃分為m

mm個部分,那麼這樣的話我們就考慮將這m

mm個部分進行排列,也就是m

mm的全排列→m!

→m!→m

!而我們一共有n−1

n-1n−

1條邊,要選出m−1

m-1m−

1條,即求組合:cm−

1n−1

c_^cm

−1n−

1​當然這樣還是只能得到部分分,因為cm−

1n−1

c_^cm

−1n−

1​實在太大了,需要邊運算邊模,但除法並不具有這樣的性質,故我們要將其轉化為乘法,我們知道除以乙個數,等於乘以這個數的乘法逆元,而再根據費馬小定理可以知道乙個數(x)

(x)(x

)的乘法逆元(y)

(y)(y)=x

模數−2

=x^=x

模數−2

而對於上述式子,可以通過快速冪迅速求解

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define ll long long

const

int h=

1<<20;

#define ch cheap

#define xjq (int)1000000007

using namespace std;

inline ll read()

while

(s>=

'0'&&s<=

'9')

return d*f;

}ll n,m;

ll f[

(int

)1e5+5

];void

fac(

)ll gd

(ll x,ll y)

return ans;

}ll c()

intmain()

printf

("%lld\n",(

c())

*f[m]

%xjq);}

return0;

}

牛客國慶集訓派對Day1

a 看樣例過題 include include include include include using namespace std typedef long long ll typedef pairpii const int maxn 1e5 10 vectorg maxn int a 10 i...

牛客國慶集訓派對Day4

a 把b n include include include includeusing namespace std int main d 由於是個完全圖,選擇乙個權值最小的點,其他所有的點向它連線就行了。注意點為1的時候輸出0 include include include includeusing...

牛客國慶集訓派對Day2

題意 給出最大4096 64和64 4096的矩陣,其中有乙個矩陣只含有0和1,問你它們相乘所得到得矩陣所有元素異或 思路 一開始我想到的是能不能將01矩陣的一排都用二進位制表示,但是發現2的64次方大於4096,反而增大了複雜度,於是沒有做出這題,題解是將矩陣分塊,最多分成8塊,這樣01矩陣的種數...