上一页 1 ··· 15 16 17 18 19 20 21 22 23 ··· 28 下一页
摘要: 在栈上创建: MyClass a;//调用默认构造函数 MyClass a();//声明返回值为MyClass的函数a,不是创建对象 在堆上创建: 对于内置类型,加括号会初始化,不加括号不会初始化; 对自定义类型,都会调用默认构造函数,加不加没有区别。 阅读全文
posted @ 2022-01-01 11:46 80k 阅读(72) 评论(0) 推荐(0)
摘要: 一、最小生成树 1、prim算法 和dijkstra算法很像 (1)朴素版 O(n^2) 适合稠密图 dijkstra算法每次更新到起点的距离,prim算法每次更新到集合的最短距离(用邻接点到当前被加入点的距离更新)(集合为已经生成的树) 858 Prim算法求最小生成树 1 #include<io 阅读全文
posted @ 2021-12-31 11:38 80k 阅读(63) 评论(0) 推荐(0)
摘要: 最短路问题 一、单源最短路(一个点到所有点的最短距离) 1、所有边的权重都为正 n个点,m个边 (1)朴素dijkstra O(n^2) 适合稠密图,O(n^2)=O(m) 算法步骤: ①初始化距离 dis[1]=0,dis[i]=+∞,集合s为已经找到的点的集合 ② for i=1:n 找到点t, 阅读全文
posted @ 2021-12-28 10:43 80k 阅读(155) 评论(0) 推荐(0)
摘要: 图可以用邻接表存储, 邻接表为n个链表, 链表可以用数组模拟(比vector速度快)。 const int N; int h[N],e[N],ne[N],idx;//分别表示,h[i]:图中编号i的头结点,e[i]:节点i的值(编号),ne[i]节点i在链表中的下一个节点的idx。 void add 阅读全文
posted @ 2021-12-26 12:50 80k 阅读(236) 评论(0) 推荐(0)
摘要: memset按字节赋值, 常用的参数有 0(0),-1(值为-1,因为-1按补码存储,每一位都是1),0x3f(+∞),-0x3f(值为-∞,和-0x3f3f3f3f不等),0xc0(-∞) 头文件cstring 对于double,用科学计数法存储,初始化 -1可以视为-NAN 阅读全文
posted @ 2021-12-23 10:44 80k 阅读(65) 评论(0) 推荐(0)
摘要: 整数哈希: 一般可以用取模的方式,模的数(数组长度)最好取质数且离2的幂尽可能远 哈希冲突可以用拉链法和开放寻址法解决 拉链法可以用链表进行模拟,插入时在哈希寻址处的链表头结点插入 开放寻址法则直接向后找(经验值,数据长度一般要开到题目数据范围的2-3倍),利用find函数找到数据的位置或应该插入的 阅读全文
posted @ 2021-12-23 10:43 80k 阅读(75) 评论(0) 推荐(0)
摘要: 课程中模板模板参数的举例 template<typename T, template <typename T> class Container > class XCls { private: Container<T> c; public: XCls() { for(long i=0; i< 100; 阅读全文
posted @ 2021-12-22 22:31 80k 阅读(75) 评论(0) 推荐(0)
摘要: 动态绑定的要求是 1、通过指针调用 2、虚函数 阅读全文
posted @ 2021-12-22 22:23 80k 阅读(52) 评论(0) 推荐(0)
摘要: 堆可以用二叉树存储。 当前节点比左右子节点的值都小或等于(小根堆)。 对于完全二叉树,根节点编号为1,则,对于编号为n的节点,左子节点编号为2n,右子节点标号为2n+1。 完全二叉树可以用一维数组存储(编号→下标) 基本操作:up和down up:当节点数值比父节点小时,交换当前节点与父节点的值,然 阅读全文
posted @ 2021-12-19 20:42 80k 阅读(66) 评论(0) 推荐(0)
摘要: 并查集支持操作: 1、将两个集合合并 2、询问两个元素是否在一个集合当中 每个集合用一棵树来表示,以根节点编号表示整个集合,每个节点存储父节点p[x] 判断树根 if(p[x]==x) 求集合编号 while(p[x]!=x) x=p[x]; 合并集合:x和y,x→根节点x,p[x]=y。 优化:路 阅读全文
posted @ 2021-12-19 19:16 80k 阅读(164) 评论(0) 推荐(0)
上一页 1 ··· 15 16 17 18 19 20 21 22 23 ··· 28 下一页