棍子Sticks(poj_1011)[经典搜索]】的更多相关文章

[题意描述] George用相同的长度棍子,将他们随机切成最多64个单位的长度,现在,他想回到原来的状态,但他忘了他原来的多少根,以及他们原本是多长.请帮助他和设计一个程序,计算最小的可能的原始长度.所有长度均大于零的整数. [输入] 输入包含2行的块.第一行:切成多少根,最多有64根.第二行切成的每一根的长度.文件的最后一行包含零,表示结束. [输出] 输出每行应包含原始棒的最小可能长度. [输入样例] 9 5 2 1 5 2 1 5 2 1 4 1 2 3 4 0 [输出样例] 6 5 附源…
Sticks Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 128734   Accepted: 30173 Description George took sticks of the same length and cut them randomly until all parts became at most 50 units long. Now he wants to return sticks to the or…
非常可乐 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 3688    Accepted Submission(s): 1533 Problem Description 大家一定觉的运动以后喝可乐是一件很惬意的事情,但是seeyou却不这么认为.因为每次当seeyou买了可乐以后,阿牛就要求和seeyou一起分享这一瓶可乐,而且一定要…
题意: 给你一个初始的图,然后每次输入一个图,要求移动x最小的步数达到和初始图一样,输出路径 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 5 6 7 8 5 6 7 8 5 6 7 8 5 6 7 8 9 x 10 12 9 10 x 12 9 10 11 12 9 10 11 12 13 14 11 15 13 14 11 15 13 14 x 15 13 14 15 x r-> d-> r-> 好像有很多中方法解决这个问题:八数码的八个境界 ①bfs + 康托展开…
题目的大致意思是: 如今有n根木棍,然后须要把它们拼成相同长度的木棍,问满足这个条件的最短的长度是多少? 想法嘛:那肯定是dfs把长度搜一遍就好,但问题的关键是这里会超时.那么就要用到剪枝的原理了. 下面部分是来自于pku的gw老师说哒 1)不要在同一个位置多次尝试同样长度的木棒(在某一次拼接时选择长度为s的木棒导致拼接失败.则在同一位置尝试下一根木棒时.要跳过全部长度为s的木棒) 2)假设因为以后的拼接失败.须要又一次调整第i根棍子的拼法,则不会考虑替换第i根棍子中的第一根木棒. 3)不要希望…
A计划 Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total Submission(s) : 12   Accepted Submission(s) : 9 Font: Times New Roman | Verdana | Georgia Font Size: ← → Problem Description 可怜的公主在一次次被魔王掳走一次次被骑士们救回来之后,而今,不幸的她…
Problem Description The 15-puzzle has been around for over 100 years; even if you don't know it by that name, you've seen it. It is constructed with 15 sliding tiles, each with a number from 1 to 15 on it, and all packed into a 4 by 4 frame with one…
这题数据大容易TLE 优化:预处理, 可以先枚举出5^3的状态然后判断合不合法,但是由于题目说了有很多墙壁,实际上没有那么多要转移的状态那么可以把底图抽出来,然后3个ghost在上面跑到时候就不必判断了,减少了两次无用的枚举. 减少代码的方法:1.结点没有3个时增加冗余点,2.把位置坐标二元组编号成一个数,这点在预处理时可以顺便完成(坐标范围0~15),3.把三个ghost的位置状态压缩成一个数字,方便push,但是注意重时不能直接用Hash掉的值来判断vis,因为Hash以后数字范围很大. 这…
题目描述 给出一张地图,这张地图被分为n×m(n,m<=100)个方块,任何一个方块不是平地就是高山.平地可以通过,高山则不能.现在你处在地图的(x1,y1)这块平地,问:你至少需要拐几个弯才能到达目的地(x2,y2)?你只能沿着水平和垂直方向的平地上行进,拐弯次数就等于行进方向的改变(从水平到垂直或从垂直到水平)的次数.例如:如图,最少的拐弯次数为5. Solution 这个题想了我一会啊... 所以来记录一下. 想法: 直接从起点开始跑广搜. 但是与传统广搜不同的是,一跑就把那一整行都跑掉,…
http://poj.org/problem?id=1011 (题目链接) 题意 给出一大堆小棍子的长度,需要把他们拼成几根长度相等的大棍子,求大棍子的最短长度. Solution 经典搜索题,剪枝剪到手软. 要得到最小的原始木棍长度,可以按照分段数的长度,依次枚举所有的可能长度L.每次枚举L时,dfs判断是否能用小木棍拼合出整数个L.如果不剪枝,就等着狂TLE吧. 最优性: 1.所有木棍的长度和一定能一定能整除大木棍长度L. 2.大木棍长度一定>=小木棍最长长度. 可行性: 3.一只长木棍肯定…