USACO 2008 Dec Silver 1.Hay For Sale
2015-08-19 11:42
411 查看
一打眼就是背包嘛。原始程序是这样的。
#include<stdio.h>
#include<algorithm>
using namespace std;
int n,m;
int f[55000];
int main()
{
scanf("%d %d",&n,&m);
f[0]=1;
for(int i=1;i<=m;i++)
{
int x;
scanf("%d",&x);
for(int j=n;j>=x;j--)
{
f[j]=max(f[j-x],f[j]);
}
}
for(int i=n;i>=0;i--)
{
if(f[i]!=0)
{
printf("%d",i);
return 0;
}
}
}但会发现超时。。。于是就优化一下喽,将出现过的体积数放在一个数组里。
#include<stdio.h>
#include<algorithm>
using namespace std;
int n,m;
int cnt;
int que[5500];
int vis[55000];
int cmp(int a,int b)
{
return a>b;
}
int main()
{
scanf("%d %d",&n,&m);
que[1]=0;
cnt=1;
vis[0]=1;
for(int i=1;i<=m;i++)
{
int x;
scanf("%d",&x);
if(x>n)continue;
int t=0;
for(int j=1;j<=cnt;j++)
{
if(vis[que[j]+x]==0&&que[j]+x<=n)
{
t++;
que[cnt+t]=que[j]+x;
vis[que[j]+x]=1;
}
}
cnt+=t;
}
sort(que+1,que+1+cnt,cmp);
printf("%d",que[1]);
}
然后呢?就过了。
#include<stdio.h>
#include<algorithm>
using namespace std;
int n,m;
int f[55000];
int main()
{
scanf("%d %d",&n,&m);
f[0]=1;
for(int i=1;i<=m;i++)
{
int x;
scanf("%d",&x);
for(int j=n;j>=x;j--)
{
f[j]=max(f[j-x],f[j]);
}
}
for(int i=n;i>=0;i--)
{
if(f[i]!=0)
{
printf("%d",i);
return 0;
}
}
}但会发现超时。。。于是就优化一下喽,将出现过的体积数放在一个数组里。
#include<stdio.h>
#include<algorithm>
using namespace std;
int n,m;
int cnt;
int que[5500];
int vis[55000];
int cmp(int a,int b)
{
return a>b;
}
int main()
{
scanf("%d %d",&n,&m);
que[1]=0;
cnt=1;
vis[0]=1;
for(int i=1;i<=m;i++)
{
int x;
scanf("%d",&x);
if(x>n)continue;
int t=0;
for(int j=1;j<=cnt;j++)
{
if(vis[que[j]+x]==0&&que[j]+x<=n)
{
t++;
que[cnt+t]=que[j]+x;
vis[que[j]+x]=1;
}
}
cnt+=t;
}
sort(que+1,que+1+cnt,cmp);
printf("%d",que[1]);
}
然后呢?就过了。
相关文章推荐
- PHP动态规划解决0-1背包问题实例分析
- PHP贪婪算法解决0-1背包问题实例分析
- PHP回溯法解决0-1背包问题实例分析
- hdu 1203 I NEED A OFFER! 01背包
- HDU 1203 I NEED A OFFER! 题解
- 多重背包问题的单调队列优化 转载
- 背包问题(贪婪法)
- 【分组背包】开心的金明
- 【01背包】原型
- HDU 1203 i need a offer
- 小P的故事——神奇的饭卡(0—1背包,求剩余钱最少)
- HDU 1494 跑跑卡丁车
- HDU 2159 DP
- hdu2955背包问题
- hdu 2602 Bone Collector
- poj 3624 Charm Bracelet
- uva 624 CD
- uva 10130 SuperSale
- uva 562 Dividing Coins
- 背包问题------