比赛 |
20121108 |
评测结果 |
AAAAAAAAAA |
题目名称 |
造房子的学问 |
最终得分 |
100 |
用户昵称 |
feng |
运行时间 |
0.023 s |
代码语言 |
C++ |
内存使用 |
3.83 MiB |
提交时间 |
2012-11-08 11:11:40 |
显示代码纯文本
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<iostream>
using namespace std;
int n,m,i,a,b,c,l,tmp,head,tail,x;
int queue[100000];
int ans[40000];
int f[40000];
void pushin(int x,int tmp){
if (x>0)
if (ans[x]>tmp && f[x]){
queue[++tail]=x;
f[x]=false;
ans[x]=tmp;
}
}
int main()
{
freopen("wood.in","r",stdin);
freopen("wood.out","w",stdout);
scanf("%d%d%d%d%d%d",&n,&m,&a,&b,&c,&l);
memset(f,true,sizeof(f));
memset(ans,0x7f,sizeof(ans));
queue[1]=n;
f[n]=false;
ans[n]=0;
head=1;
tail=1;
while (head<=tail){
x=queue[head];
f[x]=true;
tmp=x+a;
pushin(tmp,ans[x]+1);
tmp=x+b;
pushin(tmp,ans[x]+1);
tmp=x+c;
pushin(tmp,ans[x]+1);
tmp=x-l;
pushin(tmp,ans[x]+1);
tmp=l;
pushin(tmp,ans[x]+1);
tmp=x/2;
pushin(tmp,ans[x]+1);
head++;
}
if (ans[m]==ans[0]) printf("No solution.");
else printf("%d",ans[m]);
return 0;
}