随笔分类 -  乱搞——搜索

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