UVA-10384 The Wall Pushers (IDA*)】的更多相关文章

题目大意:走迷宫,遇到墙时可以推着墙走,但墙后还是墙时便不能推.求出一条任意的最短路径. 题目分析:这道题出的比较人性,输入的时候便是将四周的墙用二进制数表示好了,其实这样减轻了做题人的负担.IDA*,当到最近的一个出口的距离加上当前层数cur都比maxd大时,则剪枝.不过,值得注意的是:当推着墙走的时候,涉及到3个格子周围的墙的变化(在边界除外). 代码如下: # include<iostream> # include<cstdio> # include<cmath>…
题意:从起点出发,可向东南西北4个方向走,如果前面没有墙则可走:如果前面只有一堵墙,则可将墙向前推一格,其余情况不可推动,且不能推动游戏区域边界上的墙.问走出迷宫的最少步数,输出任意一个移动序列. 分析: 1.最少步数--IDA*. 2.注意,若此墙可推动,必须改变当前格子,和沿当前格子向前一步的格子的墙的标记. 3.若沿当前格子向前两步的格子存在,则这个格子的墙的标记也要改变.不存在的情况是:把墙推向了边界. 4.因为每个格子的值是是1(如果正方形以西有一个墙),2(北),4(东)和8(南)的…
链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1325 题意: 从迷宫的S处出发,每次可以往东.南.西.北4个方向之一前进.如果前方有墙壁,游戏者可以把墙壁往前推一格.如果有两堵或者多堵连续的墙,则不能推动.另外,游戏者也不能推动游戏区域边界上的墙.用最少的步数走出迷宫(边界处没有墙的地方就是出口).迷宫总是有4行6列,多解时任意…
题目 题目     分析 IDA*大法好,抄了lrj代码.     代码 #include <cstdio> #include <cstring> #include <algorithm> using namespace std; const int maxans=14; int n,a[maxans+1]; bool dfs(int d,int maxd) { if(a[d] == n) return true; if(d == maxd) return false;…
uva 1153 顾客是上帝(贪心) 有n个工作,已知每个工作需要的时间q[i]和截止时间d[i](必须在此前完成),最多能完成多少个工作?工作只能串行完成,第一项任务开始的时间不早于时刻0. 这道题算比较难的贪心了.解法是维护一个关于所有选择的时间的大根堆.将所有工作按照截止时间排序(将二维问题转化为一维问题),然后依次考虑每一个工作.如果当前的总时间t,加上当前工作的时间t1,小于等于当前工作的截止时间d1,那么直接把当前工作加入大根堆中.如果t+t1>d1,说明如果做这个工作,就超时了,所…
Problem UVA10384-The Wall Pushers Accept: 199   Submit: 1546Time Limit: 10000 mSec Problem Description Input The input file may contain several mazes to solve. Each maze description starts with a single line containing two integers x and y (1 ≤ x ≤ 6,…
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…
在电影<盗梦空间>中,男主角科布和妻子在梦境中生活了50年,从楼宇.商铺.到河流浅滩.一草一木.这两位造梦师用意念建造了属于自己的梦境空间.你或许并不会想到,在不久未来,这看似科幻的情节将走入人们的日常生活.现在,现实中的造梦行动已经開始在互联网时代悄然上演. 互联网X实验室在<互联网进化论>一书中以前提出互联网正向着与人类大脑高度相似的方向进化,它将具备自己的视觉.听觉.触觉.运动神经系统,也会拥有自己的记忆神经系统.中枢神经系统.自主神经系统.能够称之为互联网虚拟大脑. 同一时…
题意: 给一个无向图,再给一系列操作(以下3种),输出最后的平均查询结果. (1)D X 删除第x条边. (2)Q X k  查询与点X相连的连通分量中第k大的点的权值. (3)C X v  将点X的权值改为v. 思路: 第一点,由于需要删除边,不是很方便,所以可以先将所有操作存起来,反序来操作,这样删边就变成加边,方便了不少.每次加边时若两点不属于同个连通分量,就将点少的整个连通分量中的点逐个插入到另一个连通分量中. 第二点,查第k大,这个比较简单,只需要维护Treap上每个点的的左右孩子数量…
题意: 模拟n个程序运行 格式一共有5种:var = constant(赋值):print var(打印):lock:unlock:end, 上述5种语句分别需要t1.t2.t3.t4.t5单位时间 运行态的程序每次最多运行Q个单位时间(称为配额) 一个程序的配额用完之后,把当前语句(如果存在)执行完之后该程序会被插入一个等待队列中,然后处理器从队首取出一个程序继续执行. lock的作用是申请对所有变量的独占访问.lock和unlock总是成对出现,并且不会嵌套.lock总是在unlock的前面…