演算法提高 拿糖果 完全揹包

2021-08-15 13:07:37 字數 702 閱讀 8531

問題描述

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

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

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

輸入格式

乙個整數n

輸出格式

最多可以拿多少糖

樣例輸入

15樣例輸出

6資料規模和約定

n <= 100000

完全揹包問題。可以將糖果總數看做揹包容量,質因子看做物品。先用素數篩篩出所有素數。

dp[i]=max(dp[i], dp[i-2*prime[j]]+prime[j]);

#include#include#include#include#includeusing namespace std;

int n,fac[100000],fn;

int dp[100005];

#define max_n 100005

int prime[max_n/2];

bool is_prime[max_n+1];

void sieve(int n)

}}int main()

}printf("%d\n",dp[n]);

return 0;

}

藍橋杯 演算法提高 拿糖果 完全揹包變形

一開始把題理解錯了,以為m n,就篩了下質因數,數量不多直接暴力判斷了 交了一發只過了50 如下 include include include include include include define pk push back using namespace std const int inf...

演算法提高 拿糖果

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