藍橋杯 演算法提高 拿糖果(完全揹包dp)
藍橋杯歷年真題題目及題解目錄彙總
演算法提高 拿糖果
時間限制:1.0s 記憶體限制:256.0MB
問題描述
媽媽給小B買了N塊糖!但是她不允許小B直接吃掉。
假設當前有M塊糖,小B每次可以拿P塊糖,其中P是M的一個不大於根號下M的質因數。這時,媽媽就會在小B拿了P塊糖以後再從糖堆裡拿走P塊糖。然後小B就可以接著拿糖。
現在小B希望知道最多可以拿多少糖。
輸入格式
一個整數N
輸出格式
最多可以拿多少糖
樣例輸入
15
樣例輸出
6
資料規模和約定
N <= 100000
很快就想到完全揹包了,被質因數卡了很久,一直不知道定義是啥,質因數是素數+能被自身整除,注意p會隨著n的減少而減少,所以外層應該放質量,內層放選法,最後感覺這規模沒必要倍篩
import java.util.Scanner;
public class 藍橋杯_拿糖果 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int[] dp = new int[n+1];
int m=n;
for(int i=4;i<=n;i++) {
for(int j=2;j*j<=i;j++)
if(is(j) && i%j == 0)
dp[i] = Math.max(dp[i], dp[i-2*j]+j);
}
System.out.println(dp[n]);
}
static boolean is(int x) {
if(x==2)
return true;
for(int i=2;i*i<=x;i++)
if(x%i==0)
return false;
return true;
}
}
相關文章
- 揹包DP——完全揹包
- [藍橋杯][演算法提高VIP]奪寶奇兵 dp演算法
- dp-完全揹包
- 藍橋杯 演算法提高 字串壓縮演算法字串
- 藍橋杯演算法提高——字串匹配(Java)演算法字串匹配Java
- P8687 [藍橋杯 2019 省 A] 糖果
- [藍橋杯][演算法提高VIP]大數加法演算法
- [藍橋杯][演算法提高VIP]尤拉函式演算法函式
- [藍橋杯][演算法提高VIP]超級瑪麗演算法
- [藍橋杯] 乘積最大(dfs或dp)
- 藍橋杯 -- 演算法提高 身份證號碼升級演算法
- 揹包DP——混合揹包
- [藍橋杯][演算法提高VIP]分蘋果 線段樹演算法蘋果
- [Java] 藍橋杯ADV-203 演算法提高 8皇后·改Java演算法
- 題目 1501: [藍橋杯][演算法提高VIP]分蘋果演算法蘋果
- Java實現 藍橋杯 演算法提高 八數碼(BFS)Java演算法
- 【恐怖の演算法】 揹包DP演算法
- 揹包DP
- 【模板】01揹包、完全揹包
- 分組揹包、完全揹包
- javascript演算法基礎之01揹包,完全揹包,多重揹包實現JavaScript演算法
- 藍橋杯--演算法訓練演算法
- 藍橋杯—演算法訓練演算法
- 藍橋杯
- 01揹包、完全揹包、多重揹包詳解
- 揹包問題(01揹包與完全揹包)
- [藍橋杯][演算法提高VIP]最大乘積 貪心 雙指標演算法指標
- [Java] 藍橋杯ADV-185 演算法提高 五次方數Java演算法
- [Java] 藍橋杯ADV-202 演算法提高 最長公共子序列Java演算法
- [Java] 藍橋杯ADV-209 演算法提高 c++_ch02_04Java演算法C++
- [Java] 藍橋杯ADV-213 演算法提高 3-2求存款Java演算法
- [Java] 藍橋杯ADV-147 演算法提高 學霸的迷宮Java演算法
- 演算法-動態規劃-完全揹包演算法動態規劃
- [Java] 藍橋杯ADV-210 演算法提高 2-1螢幕列印Java演算法
- [Java] 藍橋杯ADV-194 演算法提高 盾神與積木遊戲Java演算法遊戲
- 藍橋杯-分巧克力
- 藍橋杯-N皇后
- 藍橋杯真題