娱乐性产物,没有教导意义。本人坑品极差,写掉要做的事情通常只能完成20%,经常连一半看别的题很好玩就去看别的了。
有实质性错误欢迎提出,作者给你磕八百个响头。
—————————————————————————————————————————
上一篇是主弄哈希对吧?哈希快写完了。
这一篇收个尾。然后开始弄(拓扑,最短路,搜索,最小生成树,并查集)
接下来还要继续弄的是 贪心,分治,trie树,搜索,哈希,并查集,异或
P16287
这题上次分析了一下相关的细节实现,现在来搭一下大体框架。
(1).给出的两个操作是有互逆性的。即a能够通过一个操作变成b,b就可以通过一个操作变成a。
(1.5).在map1中寻找有没有和整个字符串哈希数值相同的
(2).对于n个字符串,遍历它的每一个字符(删除它),算出删除它之后的哈希数值,将它存在map1里,在map2中查找是否有与其相等的哈希数值。
(3).将一整个字符串中的哈希数值存在map2中
然后再来复习一下吧。关于怎么取哈希值
1.取[l,r]
return hash1[r]-hash1[l-1]*pw[r-l+1]
2.取[1,l-1]+[r+1,n]
return hash(1,l-1)*pw[n-r]+hash1(r+1,n)
中间mp1的添加这一块好像还要加一个unique去重。
哈希的部分大体已经完成,接下来就练习最短路吧。
B3647
唔。floyd输入边赋值的时候记得要取min
一开始全部初始化INT_MAX的时候记得特判i==j->dis[i][j]=0
P1744
前置知识:
两点之间距离公式
P1629
这个需要用到一个反向建边的技巧。
好久以前就已经做过了。
如果想要求所有点到达一个点的最短路,那么不需要全源最短路。
只需要反向建边即可。