UVA 10306 e Coins(二維完全揹包)

2021-06-28 11:56:09 字數 719 閱讀 8188

題意:e-coin有兩個價值x,y,現在給你乙個價值n,給你幾種e-coin,問你能否用最小的e-coin數得到所求的價值n*n=(x1+x2+...xn)^2+(y1+y2+...yn)^2。

思路:物品個數沒有限制,則就要想到完全揹包。但是此時如何揹包就要退而求解。

dp[i][j] 表示能選到x的總和為i,y的總和為j時,最少的物品選擇數。

此時還有個隱性的物品揹包屬性,那就是個數:把物品的價值當作是揹包容量,個數當作是價值。求能達到要求且價值最小的情況。

初始化狀態:dp[0][0] = 0。

#include #include #include using namespace std;

const int inf = 0x3f3f3f3f;

const int n = 500;

int x[n],y[n];

int dp[n][n];

int m,s;

int main()

memset(dp,inf,sizeof(dp));

dp[0][0] = 0;

for(int i = 0; i < m; i++) }}

} int ans = inf;

for(int i = 0; i <= s; i++)

}} if(ans == inf) else

} return 0;

}

uva10306 e Coins 記憶化搜尋)

題目 uva10306 e coins 記憶化搜尋 題目大意 給出n個硬幣,每個硬幣有對應的x和y,ecoin的值 sqrt x x y y 問這些硬幣能否得到給定的ecoin。能的話輸出最小的組成數目。不能酒輸出not possible。解題思路 這裡的x和y並不是指定是乙個硬幣的x或y,可以是多...

UVa 10306 e Coins(二維完全揹包)

題目 有n種物品,每種物品有x,y兩個價值,並且可以有無限多個。給定s,使得 x1 x2 2 y1 y2 2 s 2。並且物品個數最少。思路 既然是物品個數沒有限制,則就要想到完全揹包。但是此時如何揹包就要退而求解。dp i j 表示能選到x的總和為i,y的總和為j時,最少的物品選擇數。此時還有個隱...

uva 714 貪心 二分

include using namespace std const int maxm 500 int k,m,p maxm bool solve int ans else pre p i return kr k void print int ans else pre p i for int i 0 ...