USACO4.1.1 Beef McNuggets (nuggets)
2014-12-10 09:25
344 查看
所有方案都能满足的情况:当且仅当输入里的n个数里有1。否则1一定是一个解。
不存在不能满足的上限:计算出输入中最大的两个数的最小公倍数x,如果比x大的数有一个不能满足,则不存在不能满足的上限。
然后就是用背包问题统计某个数是否可以取到。
不存在不能满足的上限:计算出输入中最大的两个数的最小公倍数x,如果比x大的数有一个不能满足,则不存在不能满足的上限。
然后就是用背包问题统计某个数是否可以取到。
/* ID:shijiey1 LANG:C++ PROG:nuggets */ #include <cstdio> #include <cstring> #include <algorithm> using namespace std; int n; int arr[11]; int limit; int dp[69050]; int main() { freopen("nuggets.in", "r", stdin); freopen("nuggets.out", "w", stdout); scanf("%d", &n); for (int i = 1; i <= n; i++) { scanf("%d", &arr[i]); } arr[0] = 1; limit = arr * arr[n - 1] + 10; memset(dp, 0, sizeof(dp)); dp[0] = 1; for (int i = 1; i <= n; i++) { for (int j = arr[i]; j <= limit; j++) { if (dp[j - arr[i]]) dp[j] = 1; } } for (int i = limit; i >= 1; i--) { if (!dp[i]) { if (i >= limit - 10) { printf("0\n"); return 0; } else { printf("%d\n", i); } return 0; } } printf("0\n"); return 0; }
相关文章推荐
- USACO4.1.1 Beef McNuggets (nuggets)
- [USACO4.1.1]Beef McNuggets
- C++——【USACO 4.1.1】——Beef McNuggets
- USACO4.1.1--Beef McNuggets
- USACO 4.1 Beef McNuggets (nuggets)
- Usaco Beef McNuggets——当Gcd(p,q)=1时,最大无法表示成px+qy(x,y>=0)的数是pq-p-q
- usaco 4.1 Beef McNuggets 搜索
- usaco training 4.1.1 麦香牛块 题解
- USACO Section 4.1 Beef McNuggets(数论 & 背包)
- USACO 4.1 Beef McNuggets(DP)
- USACO 4.1 Beef McNuggets
- USACO-Section 4.1 Beef McNuggets (DP)
- [USACO] Beef McNuggets
- usaco 4.1.1
- USACO-Section 4.1-PROB Beef McNuggets
- usaco nuggets 01背包
- usaco --nuggets
- USACO Beef McNuggets 解题报告
- [USACO4.1]麦香牛块Beef McNuggets
- 【USACO题库】4.1.1 Beef McNuggets麦香牛块