我太菜了居然调了一上午…… 这个题就是要求基环树森林的基环树直径和 大概步骤就是找环— dp找每个环点最远能到达距离作为点权— 复制一倍环,单调队列dp 找环是可以拓扑的,但是利用性质有更快~~好写~~的做法,就是像朱刘算法找环那样,按照输入的方向(i— to_i)打一圈标记,如果碰到同样标记就说明 ...
分类:
其他好文 时间:
2018-07-08 16:37:13
阅读次数:
247
这个是一个很常见的算法,在剑指offer中有详细的讲解,在这里提供一种优化的 "实现" 。该实现的优点是不需要每次在数据出列时,将数据copy到另一个堆栈中。并写了其对应的 "单元测试" 。 主要思想 主要实现是在类中定义了两个全局变量,标明当前队列中两个栈的状态, isMain 表示现在数据存储在 ...
分类:
其他好文 时间:
2018-06-29 00:15:31
阅读次数:
171
D - Travel Card 思路:dp,类似于单调队列优化。 其实可以写的更简单。。。 ...
分类:
其他好文 时间:
2018-06-24 19:28:04
阅读次数:
196
dijkstra算法学习 一、最短路径 单源最短路径:计算源点到其他各顶点的最短路径的长度 全局最短路径:图中任意两点的最短路径 Dijkstra、Bellman-Ford、SPFA求单源最短路径 Floyed可以求全局最短路径,但是效率比较低 SPFA算法是Bellman-Ford算法的队列优化 ...
分类:
编程语言 时间:
2018-06-18 23:23:29
阅读次数:
251
题目 分析 听说是水题,但还是没想出来。 $ dp[i] $为$ [1,i] $的需要的喷头数量。 那么$ dp[i]=min(dp[j])+1 $其中$ j<i $ 这是个$ O(n^2)$的东西,用单调队列优化一下就行了 复杂度$ O(L) $ 代码 #include <bits/stdc++. ...
分类:
其他好文 时间:
2018-06-18 11:00:43
阅读次数:
202
思路: 这题完全按照挑战上面的方法来做,开始我不是很能理解这种方法的含义。请自行阅读挑战。 一开始我超时了,不知道是什么原因,我写了一个队列优化的bellman ford ,还用了vector的邻接表,不知道为什么会超时。。。其实回头看一下,bellman ford根本就不需要邻接表。。。。 回头再 ...
分类:
其他好文 时间:
2018-05-26 16:41:30
阅读次数:
162
n表示点的个数,m表示边的条数,在依次输入边的起点终点与权值,输出总花费。 可用优先队列优化,需要的话请留言。 ...
分类:
编程语言 时间:
2018-05-23 13:05:21
阅读次数:
188
問題文N を 1 以上の整数とします。 長さ 3N の数列 a=(a1,a2,…,a3N) があります。 すぬけ君は、a からちょうど N 個の要素を取り除き、残った 2N 個の要素を元の順序で並べ、長さ 2N の数列 a' を作ろうとしています。 このとき、a' のスコアを (a'の前半N要素の総 ...
分类:
其他好文 时间:
2018-05-12 15:08:45
阅读次数:
96
题目链接 "BZOJ1855" 题解 设$f[i][j]$表示第$i$天结束时拥有$j$张股票时的最大收益 若$i \le W$,显然在这之前不可能有交易 $$f[i][j] = max\{f[i 1][j], ap[i] j\} \quad [j \le as[i]]$$ 否则,就有三种选择: ① ...
分类:
其他好文 时间:
2018-05-10 15:47:53
阅读次数:
144
洛谷数据好强啊,普通spfa开o2都过不了,要加双端队列优化 因为是双向边,所以dis(u,v)=dis(v,u),所以分别以pa1和pa2为起点spfa一遍,表示pb pa1 pa2和pb pa2 pa1,取个min即可 cpp include include include using name ...
分类:
移动开发 时间:
2018-05-08 22:24:50
阅读次数:
260