题目大意:给你$n$个点,第$i$个点有点权$v_i$。你需要将这$n$个点排成一排,第$i$个点的点权能被累加当且仅当这个点前面存在编号在$[l_i,r_i]$中的点,问你这些点应该如何排列,点权和才能最大。 数据范围:$n≤10^5$,$1≤v_i≤10^4$。 这题状压居然给了70分,场上压根 ...
分类:
其他好文 时间:
2019-04-03 09:21:21
阅读次数:
174
一眼题,要跑强连通分量 那就乖乖的打一边tarjan了,然后该怎么办呢 记录缩点后的图,并记录这个图上每个点的入度和出度 因为,如果一个点入度为零,那么就说明没有任何点跟他连接,则必须把它当成母点 反之如果出度为零,证明这个点没有办法跑出去,那么就需要当成母点,记录即可 比较答案即可 ...
分类:
其他好文 时间:
2019-03-30 18:40:31
阅读次数:
152
芝士 2 SAT问题就是一种给出n个变量,满足一些二元限制比如(x取1,y必须取0),要求求出n个变量赋值的合法方案的题目 3 SAT及更多是NP完全问题 2 SAT求解可以用tarjan,时间复杂度$O(n+m)$,但是要求输出字典序最小解的时候只有$O(nm)$的算法 算法流程就是要拆点连边,x ...
分类:
其他好文 时间:
2019-03-27 21:15:11
阅读次数:
160
一般来求LCA有3种方法 1.倍增 2.RMQ+欧拉序 3.tarjan(离线) 本文将倍增求lca 这个算法是很常见很常见的 也是较好理解的 (我也不明白假期学长讲的时候我为什么死活都不明白 自闭qwq 对不起学长qwq 明明学长讲的是最好的qwq 想学长了qwq) 一、基础概念 LCA定义: L ...
分类:
其他好文 时间:
2019-03-26 01:29:18
阅读次数:
483
来一发$LCT$求$LCA$ $LCT$在时间上不占据优势,码量似乎还比树剖,倍增,$Tarjan$大~~一点~~ 但是却是一道$LCT$的练手题 对于每一个询问,我们只需要把其中一个点(我们设为a)先$access$,这样a到根节点的路径就都在一棵$Splay$里面了 而且不难发现,有一个很妙的性 ...
分类:
其他好文 时间:
2019-03-22 10:32:54
阅读次数:
142
关于Tarjan算法 梗概 tarjan算法有两种(我了解的),一种是用来求强连通分量的,另一种是关于割点和桥的问题。 根据机房大佬HL说过,这两种算法是互相独立的,只是代码很像。 强连通分量问题 关于这类tarjan算法,我了解到的主要的一个应用就是缩点。 "例题传送门" 思路 首先,如果我们考虑 ...
分类:
其他好文 时间:
2019-03-19 21:37:32
阅读次数:
133
边的分类 有向图边分为四类: 树边, 前向边, 返祖边(后向边), 横叉边. 上图: 判定 有向图 对图进行dfs, 不考虑已经遍历过的点, 得到dfs序 $dfn_i$. 在dfs过程中, 记录当前dfs栈. 对于边$(u,v)$, 树边: $vis_v==0$; 前向边: $vis_v==1$ ...
分类:
移动开发 时间:
2019-03-17 21:23:40
阅读次数:
257
链接:https://www.luogu.org/problemnew/show/P4782 分析 按照逻辑关系建图,跑tarjan,如果上下点在一个环中,说明不可能,不然就可能。 代码 ...
分类:
其他好文 时间:
2019-03-15 14:34:13
阅读次数:
133
第一种:树上倍增 f[x,k]表示x的2^k辈祖先,即x向根结点走2^k步达到的结点。 初始条件:f[x][0]=fa[x] 递推式:f[x][k]=f[ f[x][k-1] ][k-1] 一次bfs预处理f数组(nlogn),然后每次询问都可以在(logn)时间内求出x,y的lca 求lca的步骤 ...
分类:
其他好文 时间:
2019-03-11 00:55:51
阅读次数:
169
文末有福利。 Tarjan是通过搜索树和压栈完成的,维护两个东西:dfn[i](时间戳)、low[i](通过搜索树外的边i(返祖边),节点能到达的最小节点的时间戳)。 跑完Tarjan,缩点,可以得到DAG图(有向无环图),可以再建图或统计入度出度。 在有向图中,可以找强连通分量SCC(极大强联通子 ...
分类:
其他好文 时间:
2019-03-09 23:59:47
阅读次数:
294