比赛 |
20121108 |
评测结果 |
TTAEEAEEAA |
题目名称 |
造房子的学问 |
最终得分 |
40 |
用户昵称 |
Cloud |
运行时间 |
2.303 s |
代码语言 |
C++ |
内存使用 |
3.40 MiB |
提交时间 |
2012-11-08 09:19:45 |
显示代码纯文本
#include<fstream>
#include<queue>
using namespace std;
struct yu
{
int l;
int ans;
};
queue<yu> dq;
yu tmp;
int f[32768];
int main(void)
{
ifstream fin("wood.in");
ofstream fout("wood.out");
int m;
int a[3];
int r;
int i;
fin>>tmp.l>>m;
fin>>a[0]>>a[1]>>a[2];
fin>>r;
dq.push(tmp);
while(dq.size())
{
tmp=dq.front();
if(tmp.l==m)
{
fout<<tmp.ans;
return 0;
}
for(i=0;i<3;i++)
{
tmp=dq.front();
tmp.ans++;
tmp.l+=a[i];
if(f[tmp.l]&&f[tmp.l]<tmp.ans)
continue;
f[tmp.l]=tmp.ans;
dq.push(tmp);
}
tmp=dq.front();
tmp.ans++;
tmp.l-=r;
if(!(f[tmp.l]&&f[tmp.l]<tmp.ans))
{
f[tmp.l]=tmp.ans;
dq.push(tmp);
}
tmp.l=r;
if(!(f[tmp.l]&&f[tmp.l]<tmp.ans))
{
f[tmp.l]=tmp.ans;
dq.push(tmp);
}
tmp=dq.front();
tmp.l/=2;
tmp.ans++;
if(!(f[tmp.l]&&f[tmp.l]<tmp.ans))
{
f[tmp.l]=tmp.ans;
dq.push(tmp);
}
dq.pop();
}
fout<<"No solution";
fin.close();
fout.close();
return 0;
}