樹形dp(數字轉換NOIP17提高模擬訓練4)

2021-08-04 11:13:01 字數 881 閱讀 9456

如果乙個數x的約數和(不包括它本身,下同)比它本身小,那麼x可以變成它的約數和;如果對於某個y>x且y的約數和為x,那麼x也可以變成y。例如,4可以變為3,1可以變為7。限定所有的數字變換在不超過n的正整數範圍內進行,求不斷進行數字變換且沒有重複數字出現的最多變換步數。

輸入乙個正整數n。

輸出最少需要花費的時間。

7

3
這是網上抄來的解析:如果x和y可以互相轉化,就連線一條無向邊,最後得到的圖其實是乙個森林,每棵樹都是無根樹,其實就是要求,整個森林中兩個連通的點的最遠距離(這裡邊權都是1),和在無根樹中求兩點最遠距離是一樣的,不過這題的特殊性,可以更方便點

對於任意一條邊,必有x#include#define maxn 102930

using namespace std;

int n;

long long sum[maxn],m1[maxn],m2[maxn];

void solve()

else if(m1[i]+1>m2[sum[i]])

m2[sum[i]]=m1[i]+1;

} } long long ans=0;

for(int i=1;i<=n;i++)

ans=max(m1[i]+m2[i],ans);

cout<>n;

for(int i=1;i<=n;i++) sum[i]=1;

for(int i=2;i<=n/2;i++)

for(int j=2*i;j<=n;j+=i)//求約數和

sum[j]+=i;

solve();

return 0;

}

樹形dp(人品問題NOIP17提高模擬訓練3)

網上出現了一種高科技產品 人品測試器。只要你把你的真實姓名輸入進去,系統將自動輸出你的人品指數。把兒不相信自己的人品為0。經過了許多研究後,把兒得出了乙個更為科學的人品計算方法。這種方法的理論依據是乙個非常重要的結論 人品具有遺傳性。因此,乙個人的人品完全由他的祖先決定。把兒提出的人品計算方法相當簡...

DP 樹形 DP 數字轉換

並不容易看出的模型 在n以內的數字和她們不包括自身的約數和 要求小於這個數本身 構成的森林中找到最長的樹的直徑。上述模型成立是因為每個數字的約數和 不包括自己,下同 是乙個定值,我們正好根據大小關係建立有向樹來進行dfs,根據樹的直徑求法,就可以得到結果了。include include inclu...

數字轉換 樹形DP

如果乙個數x的約數和 不包括它本身,下同 比它本身小,那麼x可以變成它的約數和 如果對於某個y x且y的約數和為x,那麼x也可以變成y。例如,4可以變為3,1可以變為7。限定所有的數字變換在不超過n的正整數範圍內進行,求不斷進行數字變換且沒有重複數字出現的最多變換步數。輸入乙個正整數n 輸出不斷進行...