题目名称 1257. 造房子的学问
输入输出 wood.in/out
难度等级
时间限制 1000 ms (1 s)
内存限制 128 MiB
测试数据 10
题目来源 Gravatarcqw 于2012-11-08加入
开放分组 全部用户
提交状态
分类标签
搜索法 动态规划
分享题解
通过:29, 提交:71, 通过率:40.85%
Gravatar苏轼 100 0.005 s 0.35 MiB Pascal
GravatarMakazeu 100 0.005 s 0.46 MiB C++
Gravataro_o 100 0.006 s 4.13 MiB Pascal
GravatarEzoi_XY 100 0.007 s 0.45 MiB Pascal
GravatarEzoi_XY 100 0.007 s 0.45 MiB Pascal
GravatarEzoi_XY 100 0.007 s 0.45 MiB Pascal
GravatarEzoi_XY 100 0.007 s 0.45 MiB Pascal
GravatarEzoi_XY 100 0.007 s 0.45 MiB Pascal
GravatarEzoi_XY 100 0.008 s 0.45 MiB Pascal
GravatarEzoi_XY 100 0.008 s 0.45 MiB Pascal
本题关联比赛
20121108
关于 造房子的学问 的近10条评论(全部评论)
BFS状态最多2^15-1种,秒之
GravatarTruth.Cirno
2012-11-08 15:48 3楼
比赛时先写了个单向的bfs,后面又写了个双向的,结果双向的wa了一个点而单向的却AC了
Gravatar张来风飘
2012-11-08 15:44 2楼
BFS。又在用 STL 了……
Gravatar王者自由
2012-11-08 15:26 1楼

1257. 造房子的学问

★   输入文件:wood.in   输出文件:wood.out   简单对比
时间限制:1 s   内存限制:128 MiB

【题目描述】

小木屋看来已被荒置很多年了, Z4 决定首先把它修葺一下,由最健壮的 hongyan 总负责。其余的人各自到岛上去砍伐木材。

一些细微工作结束后, hongyan 决定在木屋中加一条顶梁柱,但是其他人提供的木材长度参差不齐,幸运的是几何功底扎实的他,利用已有的工具造出了一把尺子。

hongyan 首先选取了了一条最好的木材,然后他可以对这条木材作如下几种操作:

1.  接上分别由 jakrinchose ,立方, worm 提供的木材 ( 由于岛上资源丰富 , 这些木材是无限的 ) ,木材的长度会不损耗的增加 。

2. 用尺子在木材上截去该尺子长度的一段,当然 截开后的两段木材依然可以利用 。

3. 把木材对半截断,木材长度变为原来的一半。

另外 jakrinchose 等提供用于拼接的木材由于质量一般(谁说的?! ) ,不能直接使用为顶梁柱。

现在 hongyan 想知道,通过这几种操作,是否能造出需要的长度的顶梁柱(当然他手中的“最好的木材”不能完全被截去,也就是说在操作的过程中不能把“最好的木材”完全扔掉以至长度为 0 ! )假如可以,最少需要多少步工序?

【输入格式】

输入文件 wood.in 有 5 行,第一行两个数 n, m (1<=n,m<=32767) 分别表示该木材原来的长度,和需要的长度 . 第 2 至 4 行各一个数分别是 jakrinchose ,立方, worm 提供用于拼接的木材长度 L1 , L2 , L3(L1 , L2 , L3<=32767),最后一行也是一个数,表示尺子的长度 L(L<n) 。( ZaZa 是喜欢整数的人,所以所有的数据是整数,同时,对半截断的木材多出来的非整数部分,将作为多余的成分删去,也就是该操作后,木材的长度可以用 div 2 来运算;同时,任何时候,木材长度都不应大于 32767 )。

【输出格式】

输出文件 wood.out 仅一行,假如不能造出需要的长度,则输出“No solution.”。否则输出最少需要的工序数。

【样例输入】

100 81
10
24
40
1

【样例输出】

3

【提示】

(样例注解:3的结果是截出1,再加上两次40)