2017寧波聯考 生成樹

2022-08-21 17:42:13 字數 1446 閱讀 6125

【題目背景】

llj熱愛生成樹。

【題目描述】

給出乙個結點數為n的無向完全圖,即任意結點兩兩相連,且每條邊長為1。llj想知道這個圖的生成樹個數。

但這個數量太大了,llj會懶得看,所以他只想看這個數量模k後的結果(若k=0,輸出-1即可)

注:生成樹定義:在圖中節點數為n,邊數為n-1的連通子圖。

【輸入】

輸入共一行,兩個非負整數n k;

【輸出】

輸出共一行乙個整數,即方案數模k後的結果。

【樣例輸入及輸出】

樣例編號

樣例輸入

樣例輸出11

102413

3100

23【資料範圍限制】

對於30%的資料: 0≤n≤10;

對於60%的資料: 0≤n≤100;

對於90%的資料: 0≤n≤1,000,000;

對於100%的資料:\(0\leq n\leq 10^\);\(0\leq k\leq 1,000,000,007\);

這題就是要找不同的有n個節點的樹的個數。

乍一看,毫無頭緒,我們不妨畫圖列舉一下吧!

n的值樹的個數

n=00

n=11

n=21

n=33

n=416

n=5125

n=61296

…………

我們不難發現乙個規律:

設\(a_i\)為n=i時的樹的個數,那麼

\(a_i=i^\)

嗯,問題似乎就解決了,不少心急的同學急忙打了乙個for迴圈的暴力**,交上去,結果就……

請注意題目中的一句話:

對於100%的資料:\(0\leq n\leq 10^\);\(0\leq k\leq 1,000,000,007\);

迴圈那麼多次,不超時才怪!

怎麼辦?我們就要用一種神奇的東西——快速冪!

◔ ‸◔?快速冪是什麼?好吃嗎?

顧名思義,快速冪就是快速求\(n^m\)的一種演算法。

我們必須知道以下規律:

\(n^m=n^a\times n^b=n^\space\space(a+b=m)\)

\(n^m=n^)}}\space\space(2\mid m)\)

快速冪的思想就是:

這樣的時間複雜度就為\(o(\log_2n)\)(好快啊)

注意要邊做邊摸。

下面附上**:

#includeusing namespace std;

int main()

if(n<2)

t=n-2;n=n%k;

while(t>0)//快速冪部分

printf("%lld\n",s);

return 0;

}

六省聯考2017

luogu lojbzoj 顯然我們只需要考慮最後公布成績的那一天。列舉這一天,預處理字首和之後即可 o 1 計算最小代價。注意倒數第二個subtask這最優的日期就是 min b i 直接計算即可。如果套用通法會爆long long,但是開unsigned long long就行了 include...

題解 六省聯考2017

題目順序不是做題順序也不是考試順序更不是難度順序,是隨機順序。為了不影響 體驗決定把 刪去,需要請私信我,qq或皆可。題目裡的難度評分是個人評分,僅供參考開心就好。題意是給定期末考試每門課的出分時間和學生希望的出分時間,如果學生要等就會有不滿意度。你可以進行老師的增加和調換操作,但是都會產生不滿意度...

六省聯考2017 題解

t1 期末考試 題意 有 n 位同學,每位同學都參加了全部的 m 門課程的期末考試,都在焦急的等待成績的公布。第 i 位同學希望在第 t i 天或之前得知所有課程的成績。如果在第 t i 天,有至少一門課程的成績沒有公布,他就會等待最後公布成績的課程公布成績,每等待一天就會產生 c 不愉快度。對於第...