Luogu2737 USACO4.1麦香牛块(动态规划)
Posted gloid
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Luogu2737 USACO4.1麦香牛块(动态规划)相关的知识,希望对你有一定的参考价值。
小凯的疑惑升级版。只有两个数的话不能表示的最大数是ab-a-b,显然如果可选数增加不会比这更大,所以只要答案存在一定小于256*256-2*256。在这个范围内背包即可。
#include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> #include<cstring> #include<algorithm> using namespace std; int read() { int x=0,f=1;char c=getchar(); while (c<‘0‘||c>‘9‘) {if (c==‘-‘) f=-1;c=getchar();} while (c>=‘0‘&&c<=‘9‘) x=(x<<1)+(x<<3)+(c^48),c=getchar(); return x*f; } #define N 12 int n,a[N]; bool f[70000]; int main() { #ifndef ONLINE_JUDGE freopen("cow.in","r",stdin); freopen("cow.out","w",stdout); const char LL[]="%I64d "; #else const char LL[]="%lld "; #endif n=read(); for (int i=1;i<=n;i++) a[i]=read(); f[0]=1; for (int j=1;j<70000;j++) for (int i=1;i<=n;i++) if (j>=a[i]) f[j]|=f[j-a[i]]; if (!f[69999]) {cout<<0;return 0;} for (int i=69999;i>=0;i--) if (!f[i]) {cout<<i;return 0;} cout<<0; return 0; }
以上是关于Luogu2737 USACO4.1麦香牛块(动态规划)的主要内容,如果未能解决你的问题,请参考以下文章
洛谷——P2737 [USACO4.1]麦香牛块Beef McNuggets
P2737 [USACO4.1]麦香牛块Beef McNuggets(完全背包+数论确定上界)