bzoj3004 吊燈 亂搞 結論題

2021-08-31 01:36:32 字數 1313 閱讀 8976

alice家裡有一盞很大的吊燈。所謂吊燈,就是由很多個燈泡組成。只有乙個燈泡是掛在天花板上的,剩下的燈泡都是掛在其他的燈泡上的。也就是說,整個吊燈實際上類似於一棵樹。其中編號為1的燈泡是掛在天花板上的,剩下的燈泡都是掛在編號小於自己的燈泡上的。

現在,alice想要辦一場派對,她想改造一下這盞吊燈,將燈泡換成不同的顏色。她希望相同顏色的燈泡都是相連的,並且每一種顏色的燈泡個數都是相同的。

alice希望你能告訴她,總共有哪些方案呢?

alice是乙個貪心的孩子,如果她發現方案不夠多,或者太多了,就會很不高興,於是她會嘗試調整。對於編號為x(x≠1)的燈泡,如果原來是掛在編號為f[x]的燈泡上,那麼alice會把第x個燈泡掛到第 ( f[x] + 19940105 ) mod (x-1) + 1 個燈泡上。

由於九在古漢語中表示極大的數,於是,alice決定只調整9次。對於原始狀態和每一次調整過的狀態,alice希望你依次告訴她每種狀態下有哪些方案。

對於100%的資料,n<=1.2*106。

我好像會n^2的樹形dp?看一眼n的範圍發現過不了

#include

#include

#include

#include

#define rep(i,st,ed) for (int i=st;i<=ed;++i)

#define drp(i,st,ed) for (int i=st;i>=ed;--i)

#define fill(x,t) memset(x,t,sizeof(x))

const

int n=

2000000

;struct edge e[n*2]

;int r[n]

,d[n]

,queue[n]

,size[n]

;int ls[n]

,fa[n]

,edcnt;

intread()

void

add_edge

(int x,

int y)

; ls[x]

=edcnt;

}void

top_sort

(int n)}}

drp(i,n,1)

r[size[i]]++

;}}int

main

(void)if

(wjp>=n/i)

}rep

(i,2

,n) fa[i]

=(fa[i]

+19940105)%

(i-1)+

1;}return0;

}

BZOJ3004 吊燈 結論 毒瘤

n 個節點的樹,判斷能否劃分成 frac 個大小為 k 的聯通塊 首先 k 必須是 n 的倍數。然後剛開始我就非常傻的以為輸出所有約數就行了。但是圖是這樣,k 2 的話肯定是不行的。結論 若 k 是可行的,則至少有 frac 個節點的大小為 k 的倍數 證明 直接歸納吧。k n 的時候顯然 k n ...

bzoj3124 亂搞 直徑

description 小q最近學習了一些圖論知識。根據課本,有如下定義。樹 無迴路且連通的無向圖,每條邊都有正整數的權值來表示其長度。如果一棵樹有n個節點,可以證明其有且僅有n 1 條邊。路徑 一棵樹上,任意兩個節點之間最多有一條簡單路徑。我們用 dis a,b 表示點a和點b的路徑上各邊長度之和...

BZOJ5085 最大 亂搞

description 給你乙個n m的矩形,要你找乙個子矩形,價值為左上角左下角右上角右下角這四個數的最小值,要你最大化矩形的價值。sample input 2 21 2 3 4sample output 1bitset 好 n 3信仰ac include include include incl...