QDC day4
2024-09-07 04:08:11
图论。
强连通图 与 弱连通图 。
最短路 。dij 不支持负权。显然 值得一提的是利用斐波那契堆m+nlogn 。
一张 边权都是2的整数次幂 考虑 一下直接 结构体维护这个2的整次幂数组但比大小 太慢 考虑利用数据结构维护。
主席树维护每一位 (当然压位也是可以的 但却不必要 hash值维护 每个区间的值然后就可以快速判断辣。
我们还需要维护一个+1的操作 这就涉及到简单 的线段树上二分。和区间整体赋值问题。
floyd 设x y z 表示 x y 不经过z 这个点的最短路 。经典题目 应该是 分治一下 但是我不太回写,回来写一遍。
spfa 值得一提的是 复杂度 为nm 这个很容易被卡掉 具体卡掉代码如下。
#include <bits/stdc++.h> using namespace std; int N = , M = *N-, L = N; int main()
{
freopen("in", "w", stdout);
printf("%d %d %d\n", N*+, M, L);
for(int i=; i<N; i++) printf("%d %d %d\n", i, i+, );
printf("%d %d %d\n", N, N*+, );
for(int i=; i<=N; i++) printf("%d %d %d\n", i, i+N, N-i+);
for(int i=; i<=N; i++) printf("%d %d %d\n", i+N, i, );
for(int i=; i<N; i++) printf("%d %d %d\n", i+N, i+N+, );
for(int i=; i<=L; i++) printf("%d ", i); putchar('\n');
return ;
}
当然还能在负环上面判断 当然dfs套spfa 这个方法有的时候更快一点。当然floyd 也是可以的。
边权递增最短路。
排序边权 然后 一条一条加入 然后每次松弛一下即可。
某个最短路的题目:
有m条边 连接两个节点 有k条铁路 连接1到某个点 求最多去掉多少条道路使得 1到任意节点的最短路不变。
这道题
n个点m条边 dij 表示两点之间最短路 每个点都有点权 求 min{2*dij + aj};
这将等价于 min{dij+d 0 j} 即可。
n 个点 m 条边 其中有k 个关键点求 k个关键点之间两两之间最短路的最小值。
咕了。
一张图 A B C 的基地 随意选 然后 求一个点 到A B C 的最短路和最小 求 期望和。
不会 咕了。膜改 bfs 一下 即可。
最新文章
- 【Telnet】使用Telnet协议连接到远程Shell执行脚本
- Unity3D外包团队——技术分享U3D全景漫游(三)
- 20160722noip模拟赛alexandrali
- TDD 用语
- IOS 学习日志 2015-3-16
- WCF简单教程
- iOS开发——OC篇&;常用关键字的使用与区别
- Android再学习-20140928-布局
- ASP.NET Core 运行原理解剖[1]:Hosting
- Android之View绘制流程源码分析
- Windows上IOCP Socket事件模型管理
- vue的事件处理梳理
- JavaSet接口、唯一元素和Map接口整理
- chart API笔记
- [20171120]关于find 软连接问题.txt
- 048 hive运行的相关配置
- jQuery 筛选器 链式编程操作
- djangobb之debug-toolbar查看其sql
- Perl 学习笔记-文件测试
- flutter开发目录