[USACO17DEC]Push a Box】的更多相关文章

传送门 一个人推箱子,和之前的华容道中的棋子移动有异曲同工之妙,因为每次可以让人走到箱子的其他方向上,或者推一下箱子 所以状态可以设成\(f_{i,j,k}\),即箱子在\((i,j)\),人在\(k\)方向的状态是否存在,一开始也要把人移到箱子旁边作为初始状态,然后每次移动人到箱子其他方位或者推箱子 难点是如何快速判断人是否可以从一个方位移到另一个方位上去.如果可以,说明至少存在一条不经过箱子的路径使得这两个方位联通,那么这两个位置也就是在同一个点双连通分量里面,\(tarjan\)即可 然后…
https://www.zybuluo.com/ysner/note/1293166 题面 戳我 解析 挺不错的一道图论码量题. 可以借此回顾一下\(noip2013\)华容道. 思路和华容道差不多. 照洛谷数据规模看,暴搜可能有\(\frac{1}{3}\)的分数... 设\(f[w][i][j]\)表示箱子在点\((i,j)\)时,人能否到达\(w\)方向(即\(0/1/2/3\),表示上下左右). 那么我们可以先从人出发\(BFS\)一遍,预处理出未推箱子时的\(f[w][i][j]\).…
(貌似有圆方树的做法,我写的是点双) 显然这道题就是直接搜索.定义状态为f[i][j][0~4]表示箱子在(i,j),人在某个方向推.然后问题就是怎么转向.我们发现如果要转向,必须是人走过一条不包括(i,j)的路径到另一个方向.那么直接求一个点双联通分量就完事了.把点双联通里面的点两两之间都有至少两条不经过重复点的路径,这样就能转向了. 点双内,具体的处理方法是开一个桶. 具体见代码 CODE #include <bits/stdc++.h> using namespace std; cons…
[BZOJ5138][Usaco2017 Dec]Push a Box(强连通分量) 题面 BZOJ 洛谷 题解 这题是今天看到萝卜在做然后他一眼秒了,我太菜了不会做,所以就来做做. 首先看完题目,是不是有点像\(NOIP\)的那道华容道? 所以类似的考虑状态\(f[x][y][d]\),表示当前箱子在\((x,y)\)位置,人在\(d\)(上下左右中的一个)方向时是否存在.那么这样子的状态数是\(4nm\)个,显然是可以的.考虑转移的话就是人推箱子了,沿着某个方向直接推是很容易的,现在的问题是…
题目描述: bz luogu 题解: 暴力可以记录$AB$位置转移,这个时候状态是$n^4$的,无法接受. 考虑只记录$A$在$B$旁边时的状态,这个时候状态时$n^2$的. 所以说转移有两种,一种是$A$推$B$一下,另一种是$A$绕到$B$另一侧. 第一种转移显然$O(1)$,瓶颈在第二种. 发现这对点满足点双,所以建出广义圆方树,判两个点是否同父亲或一个点是另一个点的爷爷. 时间复杂度$O(n^2)$. 代码: #include<queue> #include<cstdio>…
1.跳转页面代码.下载代码(new URLRequest(下载地址)): var request1:URLRequest=new URLRequest("http://www.baidu.com/"); navigateToURL(request1); request1=null; 2.权限 (1)public :公开权限[类本身+类外部+被继承] (2)protected:保护权限[类本身+被继承] (I3)private:私有权限[类本身] 3. (1)子类继承与父类,子类可以使用…
>_<:Here introduce a simple game: >_<:resource >_<:only can push a box and finally arrive the gate. #include <windows.h> // C 运行时头文件 #include <stdlib.h> #include <cstdio> #include <malloc.h> #include <memory.h&…
Description Imagine you are standing inside a two-dimensional maze composed of square cells which may or may not be filled with rock. You can move north, south, east or west one cell at a step. These moves are called walks.  One of the empty cells co…
我们不是要背诵东西,只是因为这是我们生存的技能. 加油吧少年! 1.函数的块级作用域和函数的自我执行是一回事.!(function () { function box(){alert('hello');}; })(); 2.操作字符串的方法.concat ------'yan'.concat('jinyun')indexOf ------'yan'.indexOf('y')>-1 同lastIndexOf()charAt ------ 'yanjinyun'.charAt('3')match -…
http://poj.org/problem?id=1475 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=249 Pushing Boxes Time Limit: 2000MS   Memory Limit: 131072K Total Submissions: 4662   Accepted: 1608   Special Judge Description Imagine you are standing insid…