06 2021 档案
摘要:PART1(算法思想简介) 1.实现: 2.时间复杂度: 3.特别优势: 4.适用情况: 5.需要注意的点: PART2(算法各种类型(并附上代码)) 1.&prim& 2.&kruskal& PART3(算法的延伸应用) 1.给定一个无向连通图,求出它所有生成树中最大边权最小 解法:很多同学会下意
阅读全文
摘要:PART1 1.实现: 将每条边按权值从小到大进行排序 (要用并查集维护)容边上两点不在同一个树,则合并 2.时间复杂度: Kruskal 算法的时间复杂度由排序算法决定,若采用快排则时间复杂度为 O(ElogE) 总时间复杂度为 O(ElogE+V α(V)) 【α(V)近似看作常数】 3.特别
阅读全文
摘要:1.声明 2.基本操作 3.输入加速 4.文件输入 5.初始化
阅读全文
摘要:PART1 1.实现: a.如果一个代码每次使用都有提前的步骤,就把他们写成一个UseFunction函数 b.常用的东西就应该写成define(包括类型,因为如此万一要更改就很方便),写成define的有 1)写起来觉得麻烦的 2)用的次数很多的(1怕写错,2方便修改) 2.时间复杂度: 3.特别
阅读全文
摘要:PART1(算法思想简介) 1.实现、dalao分析: 2.时间复杂度: 3.适用情况、特别优势、需要注意的点: 4.函数、变量名的解释+英文: PART2(算法各种类型 并 附上代码) PART3(算法的延伸应用、深度的理解、相关的有趣题目)
阅读全文
摘要:1.尽量按照逻辑顺序先后从上到小写,属于同一块的写在同一块(并最好写上总注视) 声明,先定义 重要的全局变量 一些功能函数和他们相应的变量的声明 主函数 2.不同的部分最好写成函数,分在不同的地方,函数要采用InPut的写法,免得和普通的变量重复了 3.有具体意思的全局变量等东西,尽量根据意思写变量
阅读全文
摘要:1.乘法往往会爆longlong,所以要用log(ab) = loga+logb这个方法 例题【我的代码值得参考】
阅读全文
摘要:1.dijkastra 是不可行的 如果选取dijkstra求取最长路,那么思想肯定就是选取当前权值最大的点,并且选取最长的路径。但是这种思想是错误的!我们从源点来举个例子。a—b c表示的是a,b之间的路径长度为c 1—2 2 1—3 1 3—4 1 4—2 1 我们的目的是求解1到2这两个点之间
阅读全文
摘要:1.jsk精辟解析 spfa spfa-负环 2.记录最优路径 int prv[N], pree[N]; int dis[N]; bool in[N]; inline void Init() { memset(dis, 0x3f, sizeof(dis)); memset(in, false, si
阅读全文
摘要:1.离谱,学了这么久才发现自己一直学的都是最短路,没有学最长路 2.无向图时,更改一条边,两条边都要同时改变!!!!!-> 直接时i和i^1就是反向边了 3.floyed算法【最短路】【模板】 4.应当熟练掌握复杂度的计算方法,对选用算法很有用 例题:题解
阅读全文
摘要:1.memset,fill 2.inf的设置
阅读全文
摘要:PART1 关于设置inf 本文转载,个人理解用,原文见大佬博客–>>原文连接 在算法竞赛中,我们常常需要用到一个“无穷大”的值,对于我来说,大多数时间我会根据具体问题取一个99999999之类的数(显得很不专业啊!) 在网上看别人代码的时候,经常会看到他们把INF设为0x7fffffff,奇怪为什
阅读全文
摘要:1.关闭输入等待 ios::sync_with_stdio(false); 2.read输入模板 inline int read()//快读板子 { int x=0; char c=getchar(); while(c<'0'||c>'9') c=getchar(); while(c>='0'&&c
阅读全文
摘要:唯一的多源最短路算法 本质: 第一重循环每一次在图上增加【一个点和它所依附的边】,以此来更新两点间的距离 理论证明: 一个点当过中点,它就不再是所在的连通的路径上的边缘结点,即,只要是边缘结点就还没有被当作过中点,而当两条连通路径的边缘结点相同时,两条路径就会通,并且这种情况必然发生 例题:灾后重建
阅读全文
摘要:值得学习 bool Delete_Point(const TypeOfVer& data) { int i, j; for (i = 0; i < Vers; i++) if (ver[i] == data) { ver.erase(ver.begin() + i); break; } if (i
阅读全文

浙公网安备 33010602011771号