随笔分类 - 搜索
摘要:序列自动机板子题啊。
阅读全文
摘要:二分+dfs+vector暴力合并。
阅读全文
摘要:题目描述 题解: 有个$O(\sum 询问k串长)$的做法就不说了。 当然是过不去的。 貌似第22个点总长1e5只有三个串 所以考虑对询问的$k$串串长分开算。 先建$fail$树。 对于$s_k>=\sqrt{n}$的串,最多只有$\sqrt{n}$个。可以枚举然后$dfs$一遍,求出每个结束位置
阅读全文
摘要:题目描述 题解: 明显的$k$短路问题,这里提供两种方法。 1.$A$*算法 $A$*可以解决一般的$k$短路问题,但是并不如可持久化可并堆优秀。 $A$*的本质是$f+g$,而估价函数可以用终止节点到终点的最短路表示。 所以先反向建图$dij$,然后小根堆跑$A$*即可。 优化一下,总代价/起点终
阅读全文
摘要:题目描述: 题解: 先见出Trie图,然后bfs出所有状态。 我们按照字典序遍历,只要找到合法串直接跳出。这样可以保证长度最小+字典序最小。 代码:
阅读全文
摘要:题目大意: 求包含n个串的长度最短,且字典序最小的串。 题解: AC自动机/Trie图 + bfs。 我用的是Trie图。 把所有串扔到Trie树上,Trie图建fail指针。 然后的bfs搜索路径。 遍历时从小到大,可以保证字典序最小。 状态中压入各个子串出现过/为出现过。 代码:
阅读全文
摘要:题目描述:你有一个#。有8个不同方向可以动,编号依次为A-H。求使其中心8个块数字变成相同时,最短字典序最小的字符串以及中心的数字。 题解: 对于这种状态极为发散的搜索,我们可使用A*。而这道题要求最短,我们可以采用IDA*。 估价函数h=8-(中心块上出现最多的数的出现次数)。 因为每动一次只踢出
阅读全文
摘要:题目描述: 你现在有x^1,每动一步可以用当前存在的x^a和x^b获得x^(a+b)或x^(abs(a-b))。给出n(n<=1000),求最少多少步能得到x^n。 题解: IDDFS。枚举步数,然后dfs+剪枝。 剪枝: 1.目标高于上限时减掉; 2.当前存在两个>n或以上时减掉。 代码:
阅读全文
摘要:题目描述:给出一棵树,其中1为根。1号有病,每天向下传染一代。每天可以断一条边。求最小传染数。 代码:
阅读全文
摘要:题目描述:在一个5×5的棋盘上有12个白色的骑士和12个黑色的骑士, 且有一个空位。在任何时候一个骑士都能按照骑 士的走法(它可以走到和它横坐标相差为1,纵坐标相差为2或者横坐标相差为2,纵坐标相差为1的格子)移动到空 位上。 给定一个初始的棋盘,怎样才能经过移动变成如下目标棋盘: 为了体现出骑士精
阅读全文
摘要:题目描述: 在古埃及,人们使用单位分数的和(形如1/a的, a是自然数)表示一切有理数。 如:2/3=1/2+1/6,但不允许2/3=1/3+1/3,因为加数中有相同的。 对于一个分数a/b,表示方法有很多种,但是哪种最好呢? 首先,加数少的比加数多的好,其次,加数个数相同的,最小的分数越大越 好。
阅读全文
摘要:题目描述:8×8的棋盘上有4个棋子,棋子的运动方法如下:1.如果其上/下/左/右一格没有棋子,则可以去;2.如果其上/下/左/右一格有棋子,而且沿原方向再跳一步没有,则可以去。 给出初始结束位置,问8步以内能否走到? 题解:双向BFS。 从初始结束位置一起跑4步。 也称meet_in_the_mid
阅读全文
摘要:题目描述:给出一个n*n的棋盘,棋盘上每个格子有一个值。你有一个子,要求将这个子从1移到n*n(去k时可以经过比k大的点)。 开局时它可以作为车,马,相(国际象棋)。每走一步耗费时间1。你也可以中途将它换为车,马,相(国际象棋),耗费时间1。 求最短时间,以及保证最短时间的最少替换次数。 题解: 一
阅读全文
摘要:题目:(luogu翻译错的很多) Alice和Bob玩游戏,每人有8张牌,牌的值为0~4。每一轮当前玩家选择自己的牌A和对手的牌B,然后将A的值变为( A + B )%5,其中A和B都不是0。 当一个人手牌全为0时他就赢了。 T(T<=1e5)组询问,求最后谁赢了,如果都没赢输出Deal。(两个人都
阅读全文
摘要:题目描述:给出一个无向图,找出使每个点离1号距离都有最小值时边的k个选择方案。 题解: 先跑bfs求最短路,然后总方案数*=节点a与深度小于a的点相连边数。 最后枚举每个点连哪条边。 代码:
阅读全文
摘要:题目大意:给出n对括号,并给出每对括号距离的范围。问能否找到这样一个序列。 题解:好多人都用贪心。这么好的题为什么不搜一发呢? 注意:千万不要在dfs里面更新答案。 代码:
阅读全文
摘要:题目大意:给出一棵n个结点的树以及常数k。将树的所有叶节点(度为1)分组,使得组内每个叶节点距离<=k,求最小组数。 题解:贪心搜索,找一个度不为一的树根,然后对于每个节点按最远的合法叶节点距离排序,然后合并。时间复杂度O(nlogn)。 代码:
阅读全文
摘要:题目背景 你跳过华尔兹吗?当音乐响起,当你随着旋律滑动舞步,是不是有一种漫步仙境的惬意? 众所周知,跳华尔兹时,最重要的是有好的音乐。但是很少有几个人知道,世界上最伟大的钢琴家一生都漂泊在大海上,他的名字叫丹尼·布德曼·T.D.·柠檬·1900,朋友们都叫他1900。 1900 在20 世纪的第一年
阅读全文
摘要:题目描述 策策同学特别喜欢逛公园。公园可以看成一张N个点M条边构成的有向图,且没有 自环和重边。其中1号点是公园的入口,N号点是公园的出口,每条边有一个非负权值, 代表策策经过这条边所要花的时间。 策策每天都会去逛公园,他总是从1号点进去,从N号点出来。 策策喜欢新鲜的事物,它不希望有两天逛公园的路
阅读全文
摘要:题目大意:给出多个程序以及其时间复杂度,判断'Yes','No'或'ERR'。 做法: 这种做法比较耗时,但是稳。 每次读进来一个程序,先check是否ERR,然后深搜求解其时间复杂度。 没什么好说的,上代码:
阅读全文

浙公网安备 33010602011771号