图论tarjan
Lqingyyyy
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
51nod2614 小B爱旅行 (参考范艺杰代码 基本抄袭 太难了)
由题意可知 图是由 环 和 直链组成的 若 环能到达 那么 能到达的直链 都能和环组成 一组数 因为 每个到达环的路径再回来 把到环上的直链抵消了所以我们 可以考虑 把环上的值全都扔进线性基 再看直链上有哪些值是能和环组成新值的如果 线性基里能组成的 那么链上的就无需加入 若不能组成的 那么 一定会有一位 是线性基里所没有的那么答案就是 (1<<sz) * s.size() s表示线性基组成不了的数的个数 sz表示线性基里的元素个数2.删边我们可以考虑离线从后往前加边 若加的边多环 那么.原创 2021-09-01 21:42:37 · 238 阅读 · 0 评论 -
51nod 2877熟练使用tarjan的知识
我一开始想到tarjan 没想到咋做 看了题解直呼妙阿考虑一个点有多个子块 若子块中的点不能回到父节点 那么这个子块 就和 其他子块是不能互相到达的这时候只需要记录 已经遍历的多少子块即可 这样不会重复#include<bits/stdc++.h>#define INF 0x3f3f3f3f3f3f3f3fusing namespace std;const int N = 1e6 + 10,M = 5e5 + 10;typedef long long ll;typedef .原创 2021-08-06 10:15:32 · 156 阅读 · 0 评论 -
牛客练习赛80D
题目首先用暴力的思想就是遍历n然后二分跑tarjan l, m 找到合适的位置 插入进行 这个的复杂度为 n^2logn所以考虑如何去优化首先想到的就是倍增 毕竟logn算法也就他了先用倍增找到合适的区间复杂度是 nlogn (n为倍增的区间大小)查找倍增区间里面的合适的范围 又为(nlogn)所以总体范围即为 2*nlogn#include<iostream>#include<vector>using namespace std;const int N原创 2021-05-05 16:43:17 · 162 阅读 · 0 评论
分享