一開始把題理解錯了,以為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希望知...