随笔分类 -  基础知识

摘要:拓扑排序 在一个有向无环图(DAG)中,我们将节点按照线性方式进行排序,使得对于任何的顶点u到v的有向边(u,v),都可以有u在v的前面。我们定义如果i到j有边,则认为j依赖于i,拓扑排序目标就是对节点进行排序,使得排在前面的节点不会依赖于后面的节点 Kahn算法:$O(E+V)$ int n, m 阅读全文
posted @ 2023-01-09 23:05 Zeoy_kkk 阅读(25) 评论(0) 推荐(0) 编辑
摘要:并查集 初始化$O(n)$ int fa[N], szp[N], sze[N], loop[N]; //fa根节点,szp点的数量,sze边的数量,loop自环的数量 int n, m; //n代表点数,m代表边数 void init() //初始化 { for (int i = 1; i <= n 阅读全文
posted @ 2023-01-08 20:37 Zeoy_kkk 阅读(44) 评论(0) 推荐(0) 编辑
摘要:二分 整数域上的二分 int l = 1, r = 1e9; while (l <= r) { int mid = l + r >> 1; if (check(mid)) l = mid + 1; //l始终代表合法答案的上一个 else r = mid - 1; //r始终代表不合法答案的下一个 阅读全文
posted @ 2023-01-08 09:54 Zeoy_kkk 阅读(124) 评论(0) 推荐(0) 编辑
摘要:贪心入门 贪心模型一:选择最大的不相交区间 题目一般都是活动安排类,想要参加更多的活动,要求参加的活动时间不能冲突 HDU - 2037 确实如此,世界杯来了,球迷的节日也来了,估计很多ACMer也会抛开电脑,奔向电视了。 作为球迷,一定想看尽量多的完整的比赛,当然,作为新时代的好青年,你一定还会看 阅读全文
posted @ 2023-01-06 22:18 Zeoy_kkk 阅读(75) 评论(0) 推荐(0) 编辑
摘要:前缀和 一维前缀和 for (int i = 1; i <= n; ++i) { pre[i] = pre[i - 1] + a[i]; } 二维前缀和 for (int i=1;i<=n;++i) { for (int j=1;j<=m;++j) { pre[i][j] = g[i][j]+pre 阅读全文
posted @ 2023-01-06 00:11 Zeoy_kkk 阅读(49) 评论(0) 推荐(0) 编辑