POJ3460 Booksort(IDA*)】的更多相关文章

POJ3460 Booksort 题意:给定一个长度为n的序列,每次可以取出其中的一段数,插入任意一个位置,问最少需要几次操作才能使整个序列变为1~n 思路:IDA*+迭代加深搜索 小技巧:将一段数插入到另一段,等价于交换相邻的两端 估价函数:每次操作最多改变三个数的后继,统计错误后继的个数再/3即为最少需要的步数 代码: #include <cstdio> #include <iostream> #include <algorithm> #include <cc…
Description The Leiden University Library has millions of books. When a student wants to borrow a certain book, he usually submits an online loan form. If the book is available, then the next day the student can go and get it at the loan counter. Thi…
题意:从起点出发,可向东南西北4个方向走,如果前面没有墙则可走:如果前面只有一堵墙,则可将墙向前推一格,其余情况不可推动,且不能推动游戏区域边界上的墙.问走出迷宫的最少步数,输出任意一个移动序列. 分析: 1.最少步数--IDA*. 2.注意,若此墙可推动,必须改变当前格子,和沿当前格子向前一步的格子的墙的标记. 3.若沿当前格子向前两步的格子存在,则这个格子的墙的标记也要改变.不存在的情况是:把墙推向了边界. 4.因为每个格子的值是是1(如果正方形以西有一个墙),2(北),4(东)和8(南)的…
在电影<盗梦空间>中,男主角科布和妻子在梦境中生活了50年,从楼宇.商铺.到河流浅滩.一草一木.这两位造梦师用意念建造了属于自己的梦境空间.你或许并不会想到,在不久未来,这看似科幻的情节将走入人们的日常生活.现在,现实中的造梦行动已经開始在互联网时代悄然上演. 互联网X实验室在<互联网进化论>一书中以前提出互联网正向着与人类大脑高度相似的方向进化,它将具备自己的视觉.听觉.触觉.运动神经系统,也会拥有自己的记忆神经系统.中枢神经系统.自主神经系统.能够称之为互联网虚拟大脑. 同一时…
The Rotation Game Time Limit: 15000MS   Memory Limit: 150000K Total Submissions: 5691   Accepted: 1918 Description The rotation game uses a # shaped board, which can hold 24 pieces of square blocks (see Fig.1). The blocks are marked with symbols 1, 2…
题意:给你k种管道,然后是每种的长度,每种的数量,求(x1,y1)到(x2,y2)所用管道的最少数量 思路: 最开始考虑的是直接bfs,但是没有成功. 然后发现可以先找x轴x1 到 x2 ,再找y轴y1 到 y2.两个的和便是最终答案. 先用bfs处理出两条轴上的估计函数(即每个地方到x2或y2的距离),然后枚举深度搜索. Orz; 1.最开始思路的方向就错了,没想到可以x,y轴分开来考虑- -,果然脑子转不过来 2.而且最后忘了判断是否有答案,贡献了个TL #include <iostream…
题目大意:走迷宫,遇到墙时可以推着墙走,但墙后还是墙时便不能推.求出一条任意的最短路径. 题目分析:这道题出的比较人性,输入的时候便是将四周的墙用二进制数表示好了,其实这样减轻了做题人的负担.IDA*,当到最近的一个出口的距离加上当前层数cur都比maxd大时,则剪枝.不过,值得注意的是:当推着墙走的时候,涉及到3个格子周围的墙的变化(在边界除外). 代码如下: # include<iostream> # include<cstdio> # include<cmath>…
IDA*算法,即迭代加深的A*算法.实际上就是迭代加深+DFS+估价函数 题目传送:The Rotation Game AC代码: #include <map> #include <set> #include <list> #include <cmath> #include <deque> #include <queue> #include <stack> #include <bitset> #include…
题目描述 输入格式 第一行有一个正整数T(T<=10),表示一共有N组数据.接下来有T个5×5的矩阵,0表示白色骑士,1表示黑色骑士,*表示空位.两组数据之间没有空行. 输出格式 对于每组数据都输出一行.如果能在15步以内(包括15步)到达目标状态,则输出步数,否则输出-1. emmmmmm, 一道机房各位强者都A掉的题, IDA* = 迭代加深DFS + 估价函数. 用当前的状态与目标状态不同的点数作为估价函数, 以步数为迭代的深度, 在合法的情况下进行dfs, 最终输出答案 #include…
题面 传送门 分析 首先,直接搜索肯定会TLE 很容易想到用迭代加深的方法,限定搜索深度 但是,这样仍然不够,需要用启发式的方法优化 我们设计一个估价函数f(x)=g(x)+h(x)f(x)=g(x)+h(x) g(x)g(x)是初始状态到当前状态的实际代价 h(x)h(x)是当前到目标的估计代价 如果f(x)=g(x)+h(x)>d(当前限定深度)f(x)=g(x)+h(x)>d(当前限定深度),则直接返回 h(x)h(x)函数如何设计? h(x)h(x)不能劣于实际最优值,所以可设为当前状…