摘要:
今天总结了几个最短路的算法模板,如下所示: 1、floyd 的代码模板: 2、dijkstra的代码模板: 剩下一些等明天再更新了………… 阅读全文
摘要:
这几天都在学习状压DP,总结一下,首先是状压DP的工具。 类型 符号 规则 例子 按位与 & 同1为1,其余为0 9 00001001 & 5 00000101 5 00000101 1 00000001 按位或 | 同0则0,其余为1 9 00001001 | 5 00000101 5 00000 阅读全文
摘要:
ACM主要用到下面的用法: 1、赋值:s.clear ( ) ;清空 另外的 + 、-、 =、> 、<、string 都支持(大于号,小于号string 是按 字典序从左往右比较的); 2、插入:s.replace(2,0," zhang') 表示从第二个元素开始将连续0个元素替换成“zhang”; 阅读全文
摘要:
题意:给出一个字符串,计算其中的最长回文长度 这题字符串长度给到10的5次方,简单的枚举不行。采用manacher算法则可以在O(n)的时间内得出答案。 manacher算法理解: 工具:1、定义了一个数组 r[ i ] 记录的是以i为中心向最左边(或者最右边)的最长回文长度,即回文的半径。 2、定 阅读全文
摘要:
状压BFS 注意在用二维字符数组时,要把空格、换行处理好。 #include<stdio.h> #include<algorithm> #include<string.h> #include<queue> using namespace std; #define INF 0x3f3f3f3f int 阅读全文
摘要:
题意:1个机器人找几个垃圾,求出最短路径。 状压BFS,这道题不能用普通BFS二维vis标记数组去标记走过的路径,因为这题是可以往回走的,而且你也不能只记录垃圾的数量就可以了,因为它有可能重复走同一个垃圾。其实解决的办法就是把vis标记数组开到3维,用来存每次走的状态。再通过位运算即可。 下面是2 阅读全文
摘要:
题目是给你起点sx,和终点gx;牛在起点可以进行下面两个操作: 步行:John花一分钟由任意点X移动到点X-1或点X+1。 瞬移:John花一分钟由任意点X移动到点2*X。 你要输出最短步数及打印路径。 最短步数用bfs就行了。 至于路径,用一个结构体就可以去存每个点的父节点,再递归输出路径就行了。 阅读全文
摘要:
这道题是下流星,流星会下到上下左右中的位置,而且有时间的,要你求出最短到达安全位置的时间。 这道题要注意边界是可以超过300的 阅读全文