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

2021-09-13 01:49:13 字數 885 閱讀 4434

一開始把題理解錯了,以為m=n,就篩了下質因數,數量不多直接暴力判斷了;交了一發只過了50%...**如下:

#include#include#include#include#include#include#define pk push_back

using namespace std;

const int inf=0x3f3f3f3f;

const int max=100005; //100005

int n;

int eul[max];

bool vis[max];

vectorvt[max];

void geteul()

printf("%d\n",ans);

}return 0;

}

再看一遍題才發現m是一直變化的。。果然還是太菜了55555...怎麼都想不到是個揹包問題。。後來在大佬的提醒下,發現可以這麼想:揹包是給定乙個容量,往裡放物品,最多能放多少;這道題是給定乙個總量,往出取物品,最多能取多少。所以就是個揹包問題,再一想,是個完全揹包。那麼就把每個質因數當作乙個物品,但要判斷能不能用(即能否被整除)。100%**如下:

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

const int max=100005;

int n;

bool vis[max];

int pri[max];

void getpri() //素數篩選

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

}return 0;

}

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

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

藍橋杯 演算法提高 拿糖果 變形的揹包問題

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

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

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