如果乙個數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 輸出不斷進行...