- 博客(11)
- 收藏
- 关注
原创 Acwing143.最大异或对
A:最多有N个数 每个数一共要31个节点 假设每个数的每个节点都不同(不可能的极端情况) 那么就有N*31个节点 则为3000000 习惯多10个为3000010;A:if成立 则该位异或为1 所以需要在res上使这一位为1 如果不成立则不需要加;Q:为什么M = 3000010;具体关于trie的存储方式见835。trie 01字典树。
2025-05-28 19:50:38
415
原创 Acwing835.Trie字符串统计
/ son数组 当行标为0时 代表是根节点。// 列标表示这条边下面连了哪些字母。// 值表示该新连起来的边的编号。// 其他行标代表边的编号。重点理解用边的编号去代表点。
2025-05-26 20:46:12
268
原创 Acwing851.852 spfa求最短路 求负环
以bellmanford思想为基础,优化为增加一个queue与st状态数组 将每个更新的点放入queue(如果一个点更新了 则说明跟他相连的点都能更新找到更短路径) 用st存储是否入队 当一个点没有入队的时候才允许入队。与求最短路的不同点: 增加了cnt数组 初始入队时将所有点全部入队(避免初始进入的点与其他块不连通 (负环在其他连通块内)// cnt是边的条数 根据抽屉原理 若有n条边则一定经过了n + 1个点 若一共有n个点则一定有环。写完之后长得跟dijkstra有点像。
2025-05-21 20:52:47
381
原创 Acwing853.有边数限制的最短路(bellman-ford)
则更新顺序为 d[y]=min(0x3f3f3f3f,1) = 1;// 备份上一次的更新。假设abc三点 x-y权1 y-z权1 x-z权3 k为1(只能选一条边)
2025-05-21 20:34:38
319
原创 Acwing850.Dijkstra求最短路Ⅱ 堆优化版
int n, m;idx = 0;d[1] = 0;while (!pq.pop();st[p] = 1;i!= -1;init();i < m;i++) {dijkstra();return 0;
2025-05-21 20:18:21
225
原创 Acwing848有向图的拓扑序列 (模拟队列版
不需要处理孤立点 因为孤立点初始就是入度为0已经加入队列里了。如果有向无环图 则入度一定会有为0的点。如果有环 则入度一定不可能变成0;
2025-05-15 16:17:43
369
原创 Acwing848有向图的拓扑排列(queue版)
int n, m;int d[N];d[b]++;idx = 0;i <= n;i++) {q.push(i);while (!q.pop();i!= -1;d[j]--;q.push(j);= n) {else {init();int a, b;add(a, b);topsort();return 0;
2025-05-15 16:01:25
157
原创 Acwing847 图中点的层次
int n, m;int d[N];e[idx] = b;idx = 0;d[1] = 0;q.push(1);while (!q.pop();i!= -1;init();i < m;i++) {int a, b;add(a, b);bfs();return 0;
2025-05-14 23:55:25
320
原创 个人成长记录(邻接表加边模板及其原理)
const int N = 点数, M = 2 * N (无向图边要乘2)h[i] 表示以i为起点 这个边的下一条边是多少(跟ne的用处差不多)ne[i] 表示编号为i的边的下一条边的编号。e[i] 表示编号为i的边的终点。
2025-05-13 22:41:54
187
空空如也
二本的软件工程专业的女生未来的出路到底是什么?
2025-05-15
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅