Luogu P5020 貨幣系統

2022-03-16 20:22:03 字數 548 閱讀 4020

先把$a$陣列排一下序。

從最小的數開始選,顯然最小這個數必須選,然後利用完全揹包的思想,從$a_i$到最大值篩選一遍,將可以組成的打上標記。

在判斷後面的數字時,如果已經被標記過了,就不再選,沒有被標記過就標記一下,再篩選一次數(即再做一次完全揹包)。

#include#define n 110

#define a 25010

using namespace std;

int t,n,ans,mmax;

int a[n];

bool vis[a];

void init()

void read()

return;

}void backpack()

ans++;

vis[a[i]]=1;

for(int j=a[i];j<=mmax;j++)

} }return;

}void print()

int main()

return 0;

}

Luogu P5020 貨幣系統

作為一道 noip 題,當然要考慮從部分分到正解,一是拿穩分防止正解寫掛,二是可以拿不同部分分的程式對拍。分析 看到樣例大膽猜想,或者考慮這個問題的本質。可以通過反證法證明新貨幣系統的集合一定是原貨幣系統的子集。考慮先把 a 系統的數全部選上,然後刪去一些,則這些刪去的一定可以被剩下的數都表示出來,...

題解 luogu P5020 貨幣系統

題目鏈結 玄學題目。可以用篩表,動規,搜尋做 篩表從小到大列舉,篩掉可以表示出來的數,剩下的數就是必須要選的 也就是答案 includeusing namespace std int dp 25005 t,a 105 n,sum intmain sort a 1,a 1 n for int i 1 ...

洛谷 5020 貨幣系統

題目描述 在的國度中共有 n 種不同面額的貨幣,第 iii 種貨幣的面額為 a i 你可以假設每一種貨幣都有無窮多張。為了方便,我們把貨幣種數為 n 面額陣列為 a 1 n 的貨幣系統記作 n,a 在乙個完善的貨幣系統中,每乙個非負整數的金額 都應該可以被表示出,即對每乙個非負整數 x,都存在 n ...