随笔分类 - 乱搞——搜索
摘要:题意:有一个有向图,有些点是煤,有些点是铁,但不会同时有铁和煤。现在我要从1出发,占领可以到达的点。问最少占领几个点能同时拥有一个煤和一个铁(1不用占领)。 思路:思路很秀啊。我们从1往外bfs,得到所有点到1的最短路dis[i][0],然后从所有煤跑bfs得到所有点到煤的最短路dis[i][1],
阅读全文
摘要:题意:给一有向图,如果A指向B,则A是B的上级。一直i要升职那么他的上级必须都升职。现在给你一个升职人数的区间[a, b],问你升职a人时几个人必被升职,b时几个人必升职,b时几个人没有可能被升职。 思路:打比赛的时候一直想怎么做才能一个dfs直接打出一个节点的所有子节点数,发现总是弄不出来。结果这
阅读全文
摘要:题目描述 筱玛是个快乐的男孩子。 寒假终于到了,筱玛决定请他的朋友们一起来玩迷阵探险。 迷阵可以看做一个n×nn×n的矩阵A,每个格子上有一个有一个数Ai,j。 入口在左上角的(1,1)处,出口在右下角的(n,n)处。每一步都只能向下或向右移动一格。最后能获得的经验值为初始经验e与路径上经过的所有数
阅读全文
摘要:题意:给一个r*c的矩阵开关(初始全打开的),每次按下一个开关都会改变3*3范围内的有*的地方的状态,问你最少几步能让开关全闭上,按升序输出按哪些按钮 思路:每个按钮至多按一下,按按钮的顺序和结果无关。我们把当前矩阵的开关状态状压到 long long,并且预处理按下每个按钮的变化,这样可以直接异或
阅读全文
摘要:题意:wzms 今年举办了一场剪刀石头布大赛,bleaves 被选为负责人。 比赛共有 2n 个人参加, 分为 n 轮, 在每轮中,第 1 位选手和第 2 位选手对战,胜者作为新的第 1 位选手, 第 3 位和第 4 位对战,胜者作为新的第 2 位选手,以此类推。 bleaves 调查得知,每个人都
阅读全文
摘要:题意:有1~n个小环,他们中的有些互相扣在一起,问你至少切开几个能把这写小环串成一条链 思路:还是太菜了,题目给的n<=15,显然可以暴力解决。 用二进制表示每个环切还是不切,然后搜索所有情况。当一种情况满足一下两点:1.切完之后每一串连在一起的环应该是一条链,没有分支没有环;2.当一个环被切开,那
阅读全文
摘要:题意:给你一个3*n的格子,中间那行表明的是周围8格(当然左右都没有)的炸弹数量,上下两行都可以放炸弹,问你有几种可能,对mod取模 思路:显然(不),当i - 1和i - 2确定时,那么i的个数一定确定,显然,只要第一列确定,后面全确定了,那么就3种可能,只要遍历到最后,最后一个符合num[n]
阅读全文
摘要:思路:离散化之后,直接模拟就行,标记vis开三维 代码:
阅读全文
摘要:思路:K短路裸题 代码:
阅读全文
摘要:题意:找出第k短路,输出长度,没有输出-1 思路:这题可以用A*做。A*的原理是这样,我们用一个函数:f = g + h 来表示当前点的预期步数,f代表当前点的预期步数,g代表从起点走到当前的步数,h代表从当前点走到终点的最短路,显然h可以用最短路解出。那么我们从起点开始找,每次找f最小的点,直到找
阅读全文
摘要:思路:dfs找先手必胜的情况是否存在 代码:
阅读全文
摘要:思路:一开始对k没有理解好,题意说交换k次,如果我们不需要交换那么多,那么可以重复自己交换自己,那么k其实可以理解为最多交换k次。这道题dfs暴力就行,我们按照全排列最大最小去找每一位应该和后面哪一位交换。k = 0没判断好WA了2发... 如果k >= len - 1,那么最大最小就是直接sort
阅读全文
摘要:思路: 用状压DP+DFS遍历查找是否可行。假设一个数为x,那么他最远可以消去的点为x+9,因为x+1~x+4都能被他前面的点消去,所以我们将2进制的范围设为2^10,用0表示已经消去,1表示没有消去。dp[i][j]表示栈顶是i当前状态为j时能不能消去栈顶,-1代表不知道,0不行,1行。所以我们只
阅读全文
摘要:思路: 最大步骤有20,直接BFS会超时。 因为知道开始情况和结果所以可以用双向BFS,每个BFS规定最大步骤为10,这样相加肯定小于20。这里要保存每个状态搜索到的最小步骤,用Hash储存。当发现现有状态已经在另一路出现了,那么就输出两者相加的步骤和。 代码:
阅读全文
摘要:思路: 要用优势队列,因为有的+2,有的+1,所以队列中的步长是不单调的,所以找到一个答案但不一定最小,所以用优势队列把小的放在队首。 要记录状态,所以开了三维,题目和昨天做的那道小明差不多 vis开的int型赋值bool型WA了半天 代码:
阅读全文
摘要:思路: 一道BFS题,和以前的BFS有点不同,这里的vis数组需要记录每次走时的状态,所以开了3维,只对该状态下的vis修改。 注意坑点:S的位置是可以走的 代码:
阅读全文
摘要:题意:给出一棵树,改变树的一个节点的值,那么该节点及所有子节点都变为这个值。给出m个询问。 思路:DFS序,将树改为线性结构,用线段树维护。start[ ]记录每个节点的编号,End[ ]为该节点的最小子节点的编号,维护线段树时,即是维护start[x] 到End[x]。 代码:
阅读全文
摘要:DescriptionConsider the following 5 picture frames placed on an 9 x 8 array. ........ ........ ........ ........ .CCC....EEEEEE.. .......
阅读全文
摘要:题目:VJ思路:BFS+回溯,但是要剪枝,看了dalao的题解,超时+WA无数发,终于过了#include#include#include#include#include#include//#include#include#include#include#define...
阅读全文
摘要:DNA sequenceTime Limit: 15000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 3503 Accepted ...
阅读全文