BFS|DFS
文章平均质量分 74
NightRaven
cust
展开
-
hdu4784 Dinner Coming Soon BFS
在k个平行空间中,n个点,由m条有向边连接起来,每条边有一个时间花费和金钱花费,同时,在每个点上,可以跳转到(ki+1)%k 的空间里,不同空间的边权值不变。另外,在每到达某个空间的某个顶点时,可以买一包盐,卖一包盐,或者什么也不做,买卖的时间不考虑。相同的顶点在不同的空间中盐的价格也不一定相同..现在给定顶点数n,边数m,盐的最大携带量b,空间数k,初始的金钱r,规定的时间t,问怎么走可以在t时原创 2013-11-17 20:08:50 · 2296 阅读 · 1 评论 -
zoj 3611 Ice Valley 状压BFS
500*500的平面,每格都有一个标记,表及含义如下:标记:0 空白位置,在此处可以向上下左右四个方向走,保证0位置不超过100个。标记:# 陷阱,走到此处会挂掉标记:W 墙,这个位置不能走标记:$ 盒子,在此处可以花费2秒打开盒子,取走钱,之后可以向上下左右四个方向走,保证$位置不超过10个。标记:U,D,L,R 分别对应上下左右,在这个标记处,下一步只能按照标记的方向走。原创 2014-04-02 20:41:01 · 801 阅读 · 3 评论 -
zoj1083 Frame Stacking 拓扑排序,Dfs
若干个矩形框架覆盖在一起,给出叠在一起后的俯视图,求框架suoy原创 2014-05-01 18:15:40 · 1187 阅读 · 0 评论 -
hdu1760 A New Tetris Game 博弈,Dfs
N*M的棋盘,0表示可用1表示不可用,两人轮流向棋盘中放置2*2的棋子,棋子与棋子不能重叠,同样不能覆盖不可用区域,先不能放棋子的输,求先手胜负。棋盘最大也就50*50,直接从初始状态Dfs,边界条件棋盘不能放置棋子为必败态,对于每个状态若子状态中有一个为必败态则直接返回true,所有的子状态都为true的时候则返回false。#include #include #include #原创 2014-02-24 22:25:30 · 668 阅读 · 0 评论 -
sgu157 Patience DFS打表
14个格子13张扑克牌(从A,2,3,4,...J,Q,K),目标状态是第一个格子放A,第二个放2...第13个放K 第14个是空白。现在如果只有最后n格的顺序不符合要求(前边14-n格已经排好),问这n格有多少种初始状态是可以通过移动牌来达到目标状态,移动的规则是,如果空格前边的牌是i,那么可以将点数为i+1的牌移动到空格位置,(i+1原先的位置现在就是空格了)。由于n最大只有13,这么小的状态原创 2014-01-17 01:15:58 · 684 阅读 · 0 评论 -
sgu159 Self-Replicating Numbers DFS+高精
通俗易懂的题意..给进制数B,长度n,求所有长度为n,并且平方后低n位不变的数..由于n是2000,存储的过程要用到高精...n虽然很大,但实际上符合要求的数没多少,所以直接暴力就好了,bfs,dfs都行,要注意的一点是,判断的时候如果写成n^2的高精乘法,会T掉,这里必须优化一下。事实上,只要低n位的话,我们每次添加新一位的时候只要存两个数就行,一个是这一位填多少,另一个是填上这个数后,对它高一原创 2014-01-15 16:30:15 · 674 阅读 · 0 评论 -
sgu 195 New Year Bonus Grant 树形dp
给一棵树,根节点为1,对于根节点以外的每一个节点,可以点亮该节点或他的一个儿子节点。求最多点亮的节点数*1000,以及一种可行的点亮方案。 记dp[i][0]为i不点时,i的子树中点亮的节点数,dp[i][1]为i点亮时,i的子树中点亮的节点数。初始状态除了1意外所有的dp[i][1]都是1,然后从根节点开始dfs,dp[i][1]=dp[i][1]+sum(dp[v][0],g[原创 2013-12-02 19:22:25 · 687 阅读 · 0 评论 -
sgu 134 Centroid 树的重心
对于一棵树,定义点k,删掉点k后,产生的几个联通量中节点数最大值 最小时,k为树的重心。遍历一边,用两个数组,size[i]表示i和i的子树中的节点数之和,sonsize[i]表示节点最多的子树的节点数,(n-size[i]就是这个节点没有枚举到的那个分支的节点数),然后枚举各个节点就可以了。 #include #include #include #include #incl原创 2013-11-26 19:23:37 · 674 阅读 · 0 评论 -
ZOJ 3736 Pocket Cube 脑补+BFS
2*2*2的魔方,给出初始状态和最大步数N,问在旋转不超过N次的情况下,最多能还原魔方的几个面。 这题的关键是脑补出魔方六种操作的方案...最好的办法是把题上的图抄下来,做成一个正方体....然后就各种轻松加愉快了....由于最大的步数仅仅是7,状态的判重都不用写了,每生成一个状态算一下有几个面是ok的,更新一下最大值就ok了... #include #inclu原创 2013-11-24 18:38:51 · 2038 阅读 · 0 评论 -
zoj3631 Watashi's BG DFS
N个物品,M的容量。给出每个物品的体积,求最多能占用的空间。看题意就是个裸的背包,但是M很大,达到了10000000。注意到最多只有30个物品,那么直接DFS,加点剪枝就好了...#include #include #include #include #include using namespace std;typedef long long ll;bool cmp(int x,原创 2014-03-26 23:04:09 · 584 阅读 · 0 评论