揹包問題 尤拉篩法

2022-05-28 13:57:15 字數 818 閱讀 4538

揹包問題可以分為

0-1揹包(每件物品都只有一件)

完全揹包(每件物品都有無數件)

多重揹包(每件物品可以有多件)

當然,我們的 揹包 肯定是有 容量大小的(看題目規定或者自己輸入)。

首先推薦一下0-1揹包問題的解析

然後再解決一下我自己當時有點迷糊的點

0-1揹包 的思路其實就是這樣

當前揹包的容量能不能放的下當前物品

如果能要放下當前物品要執行什麼操作(要不要拿出來之前放的物品)

執行完操作

放入當前物品後的總價值    是否大於  不放入當前物品的總價值

按照這個思路去看上面推薦的解析應該就能明白了。。。。。。。

本來一直都是用打表,今天被一道題卡超時,沒辦法就學了下,發現沒那麼難。

#includeusing

namespace

std;

#define inf 1000005

int num[inf];//

這個是所有數的陣列,等於0就代表為素數,等於1就代表合數

int book[inf];//

這個是專門放素數的陣列

intmain()

//如果這個數是素數,那就放入素數的陣列

for (int j = 1; j < t && (book[j]*i) //

如果找到了自己的最小質因數,那就跳出

} }}/*

數學小知識:每乙個合數 都至少整除 乙個素數

比如 6能整除2 那麼2就是6的最小質因數

*/

這幾天有點水。。。。。。。。。

線性篩法(尤拉篩法)

嗯在剛剛 沒錯就是在幾分鐘之前 我學會了線性篩法 實在是乙個很好的篩法 正常的篩法,都會對乙個數篩多次 但是尤拉篩法不會 尤拉篩法是用它的最大因數去篩 別跟我說最小質因數,那個很難讓人理解 雖然最小質因數和最大因數是一樣的 我們假設乙個數k,它是t的最大因數 容易知道t是不唯一的 那我們要乘以乙個質...

線性篩法(尤拉篩)

從前有乙個素數篩法叫埃拉託斯特尼篩法,它的思想很簡單,把1 n以內素數的整數倍的數字劃掉,留下的就全是素數,但是它的複雜度是o nlglgn 對於大量不友好資料會跪,於是線性曬登場了。include using namespace std int prime 1100000 primesize,ph...

AcWing 篩法求尤拉函式 篩法 尤拉函式

時 空限制 1s 64mb 給定乙個正整數n,求1 n中每個數的尤拉函式之和。共一行,包含乙個整數n。共一行,包含乙個整數,表示1 n中每個數的尤拉函式之和。1 n 10 6 題意 求1 n中每個數的尤拉函式之和。思路 在這個題目中我們不能直接分別去求1 n之間的尤拉函式,會超時,所以我們就可以根據...