【CF20C】Dijkstra?(DIJKSTRA+HEAP)】的更多相关文章

[BZOJ2599]Race(点分治) 题面 BZOJ权限题,洛谷 题解 好久没写过点分治了... 在ppl的帮助下终于想起来了 orz ppl 首先回忆一下怎么求有没有正好是\(K\)的路径 维护一个表示距离的桶 对于当前重心,依次插入每棵子树的距离值 然后检查是否存在即可 显然加一步,求最短的路径数 那么,把原来的是否存在的01数组 改为记录最短路径数的一个\(int\)数组 每次插入的时候去取\(min\)就行了 #include<iostream> #include<cstdio…
[HDU4622]Reincarnation(后缀自动机) 题面 Vjudge 题意:给定一个串,每次询问l~r组成的子串的不同子串个数 题解 看到字符串的大小很小 而询问数太多 所以我们预处理任意的答案 枚举左端点,依次向右加入新节点 直接统计答案即可 #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<cmath> #include&…
[BZOJ2882]工艺(后缀自动机) 题面 BZOJ权限题,良心洛谷 题解 还是一样的,先把串在后面接一遍 然后构建\(SAM\) 直接按照字典序输出\(n\)次就行了 #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<cmath> #include<algorithm> #include<set> #incl…
[BZOJ2882]工艺(后缀数组) 题面 BZOJ权限题,我爱良心洛谷 题解 最容易的想法: 把字符串在后面接一份 然后求后缀数组就行了... #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<cmath> #include<algorithm> #include<set> #include<map>…
[BZOJ3277]串(后缀自动机) 题面 BZOJ 题解 广义后缀自动机??? 照着别人的打了一遍.. 相当于每个串都构建一个后缀自动机 构建完一个串之后,直接把当前的last指回root就行了??? 好吧,我觉得我看了一个假的广义后缀自动机.. 不过这道题这样就行了 考虑如何计算一个串在多少个母串中出现过? 考虑他的\(right\)集合中有多少个母串的结束位置就好了 那么,每个节点开个\(set\)存一下,然后按照拓扑序向上合并一次 因为\(parent\)包含的母串个数一定较大, 所以,…
[BZOJ3238]差异(后缀自动机) 题面 BZOJ 题解 前面的东西直接暴力算就行了 其实没必要算的正正好 为了方便的后面的计算 我们不考虑\(i,j\)的顺序问题 也就是先求出\(\sum_{i=1}^n\sum_{j=1}^n[i\neq j]len[i]\) 然后对于每个后缀树上的节点,减去一下贡献 也就是\(size[i]*(size[i]-1)*(len[i]-len[i.parent])\) 这样的话,就很容易计算了.. 我知道我写的一点都不清楚 构建出\(SAM\)后,\(pa…
[BZOJ3998]弦论(后缀自动机) 题面 BZOJ 题解 这题应该很简单 构建出\(SAM\)后 求出每个点往后还能构建出几个串 按照拓扑序\(dp\)一些就好了 然后就是第\(k\)大,随便搞一下就好 #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<cmath> #include<algorithm> #includ…
[SPOJ]Substrings(后缀自动机) 题面 Vjudge 题意:给定一个长度为\(len\)的串,求出长度为1~len的子串中,出现最多的出现了多少次 题解 出现次数很好处理,就是\(right/endpos\)集合的大小 那么,直接构建\(SAM\) 求出每个位置的\(right\)集合大小 直接更新每个节点的\(longest\)就行了 最后短的可以由长的更新过来就好 #include<iostream> #include<cstdio> #include<cs…
[BZOJ1146]网络管理(整体二分) 题面 良心洛谷,有BZOJ权限题 题解 要看树套树的戳这里 毕竟是:智商不够数据结构来补 所以, 我们来当一回智商够的选手 听说主席树的题目大部分都可以整体二分 这题丢进去整体二分就行了 只需要查询树上贡献的前缀和 但是,对于这种带修改的 不能够直接修改 每一个修改操作必须拆成两个: 一个删掉原来的修改,一个加入现在的修改 否则就会重复计算贡献从而\(gg\) #include<iostream> #include<cstdio> #inc…
[BZOJ2527]MET-Meteors(整体二分) 题面 BZOJ权限题,良心洛谷链接 题解 其实我也不会做 看了zsy博客才会做... 这题如果直接爆算做显然行不通 如果只有单次询问,我们就可以二分答案 但是询问太多.. 不会二分.. 怎么办? 我们来想想瓶颈在哪里 如果每次都进行一次单次二分 我们就需要不停的计算前缀和 但是其实再进行别的二分的时候我们已经算过了 这里就算重了 怎么解决? 那我们就不让他算重: 我们把所有询问一起二分 这样每次计算完之后 所有的询问就被分成了两部分: 一部…