藍橋杯 拿糖果 動態規劃解法

2021-10-02 08:26:51 字數 946 閱讀 3918

上次寫過乙個類似的,用的dfs+記憶

媽媽給小b買了n塊糖!但是她不允許小b直接吃掉。

假設當前有m塊糖,小b每次可以拿p塊糖,其中p是m的乙個不大於根號下m的質因數。這時,媽媽就會在小b拿了p塊糖以後再從糖堆裡拿走p塊糖。然後小b就可以接著拿糖。

現在小b希望知道最多可以拿多少糖。

輸入格式

乙個整數n

輸出格式

最多可以拿多少糖

樣例輸入

樣例輸出

n <= 100000

#include

#include

using

namespace std;

#define maxn 100009

#define maxp 1009

int n;

int dp[maxn]

;#define isqrt(x) ((int)sqrt(x))

intis_prime

(int x)

if(x ==2)

for(

int i=

2; i<

(int

)sqrt

(x); i++)}

return1;

}intis(

int x,

int y)

}return0;

}int

main()

dp[0]

=0; dp[1]

=0; dp[2]

=0; dp[3]

=0;for

(int i=

4; i<=n; i++)}

} dp[i]

= max;}

cout<

}

藍橋杯 拿糖果

演算法提高 拿糖果 時間限制 1.0s 記憶體限制 256.0mb 問題描述 媽媽給小b買了n塊糖!但是她不允許小b直接吃掉。假設當前有m塊糖,小b每次可以拿p塊糖,其中p是m的乙個不大於根號下m的質因數。這時,媽媽就會在小b拿了p塊糖以後再從糖堆裡拿走p塊糖。然後小b就可以接著拿糖。現在小b希望知...

藍橋杯 拿糖果

問題描述 媽媽給小b買了n塊糖!但是她不允許小b直接吃掉。假設當前有m塊糖,小b每次可以拿p塊糖,其中p是m的乙個不大於根號下m的質因數。這時,媽媽就會在小b拿了p塊糖以後再從糖堆裡拿走p塊糖。然後小b就可以接著拿糖。現在小b希望知道最多可以拿多少糖。輸入格式 乙個整數n 輸出格式 最多可以拿多少糖...

藍橋杯 ADV 205演算法提高 拿糖果(動態規劃)

問題描述 媽媽給小b買了n塊糖!但是她不允許小b直接吃掉。假設當前有m塊糖,小b每次可以拿p塊糖,其中p是m的乙個不大於根號下m的質因數。這時,媽媽就會在小b拿了p塊糖以後再從糖堆裡拿走p塊糖。然後小b就可以接著拿糖。現在小b希望知道最多可以拿多少糖。輸入格式 乙個整數n 輸出格式 最多可以拿多少糖...