上午终于做出了昨天没有想到的其中一题,总算缓解了郁闷的心情。原来这题Cash Machine用更直接的方法都可以过,都不需用动态规划,虽然用时和空间稍多了一点......
#include <cstring>
#include <cstdio>
int v[100001];
int f[100001];
int main()
{
int N;
int n,d,i;
long cash;
while(scanf("%ld",&cash)!=EOF){
scanf("%d",&N);
memset(v,0,sizeof(v));
v[0]=1;
while(N--){
scanf("%d%d",&n,&d);
memset(f,0,sizeof(f));
for(i=0;i<=cash-d;i++){
if (v[i]&&f[i]<n&&v[i+d]==0) {
v[i+d]=1;
f[i+d]=f[i]+1;
}
}
}
for(i=cash;i>0;i--) if (v[i]) break;
printf("%d\n",i);
}
return 0;
}
另外,今天问另外一个队的同学借到了一本好书,就是传说中的《算法导论》啦~~。一看目录就知道,这真是一本不可多得的好书,而且其中几乎一半的内容在王晓东的那本《算法设计与分析》里面已经学过了。这使得这本700多页的大部头看起来变得轻松很多,而且很有成就感
。再说了,这本书要是自己买的话,可要八十多哦
,所以我决定,抓紧这个机会,这几天好好把自己还不懂的,又在我理解范围内的知识补补,也顺便调节一下心情。天天做题太郁闷了哈,这两天就让我离开一下电脑屏幕吧