演算法提高 拿糖果 線性DP

2021-07-27 05:45:44 字數 690 閱讀 4145

思路:首先給小於根號n的素數打表。d(i)表示當前剩餘i顆糖,最多可以拿到多少糖。

轉移方程:d(i) = max(d(i), k + d(i - 2 * k)),此處k表示她可以從i顆糖中拿的糖數量,即k是素數並且i % k == 0。

注意:媽媽可以拿的糖的數量如果不足p,則拿糖結束。

ac**:

#include #include#include #include #include #include #include #include #include #include #include #include using namespace std;

#define eps 1e-10

#define inf 0x3f3f3f3f

#define pi pairconst int maxn = 1e5 + 5;

int vis[500], d[maxn];

void init(int n)

int dfs(int n)

} return d[n];

}int main()

return 0;

}

如有不當之處歡迎指出!

藍橋杯 演算法提高 拿糖果 dp

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

演算法提高 拿糖果

演算法提高 拿糖果 時間限制 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 輸出格式 最多可以拿多少糖...