摘要:
并查集(又加找父亲 hh) 并查集是一种树型的数据结构,用于处理一些不相交集合(Disjoint Sets)的合并及查询问题。常常在使用中以森林来表示。集就是让每个元素构成一个单元素的集合,并就是按一定顺序将属于同一组的元素所在的集合合并。 并查集的基本操作: 1.初始化,使每个节点的祖宗节点为自己 阅读全文
摘要:
上题目: 有 N 件物品和一个容量是 V 的背包。每件物品只能使用一次。 第 i 件物品的体积是 v[i],价值是 w[i]。 求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。 输入格式 第一行两个整数,N,V,用空格隔开,分别表示物品数量和背包容积。 接下来 阅读全文
摘要:
动态规划的实质就是使用分治的思想,将当前的大问题分割成一个一个小问题来解决,最后用递推来实现每种问题之间的联系。未优化的动态规划就是使用二维数组来存储每种状态(按照我目前学的进度是这样,不能绝对的说)。 本质是对每一个小问题求出最优解,并且用递推的思想的来这种最优解的状态送到下一个问题,使得下一个问 阅读全文
摘要:
trie树即为对每个字符串出现的字母进行插入操作使其形成一个树状结构 例如:当我们要插入{abcd,dcb,bcd,ac}时,其形成的树状结构为 由于每个不同的字符串的相同的字母所在的位置不同,则每个字母的节点数也不同,因此当前以节点为下标的字母出现的次数即为以该字母结尾的字符串的出现次数 上代码: 阅读全文
摘要:
Dijkstra算法 Dijkstra算法算是贪心思想实现的,首先把起点到所有点的距离存下来找个最短的,然后松弛一次再找出最短的,所谓的松弛操作就是,遍历一遍看通过刚刚找到的距离最短的点作为中转站会不会更近,如果更近了就更新距离,这样把所有的点找遍之后就存下了起点到其他所有点的最短距离。 问题引入: 阅读全文
摘要:
树和图的两种遍历方式即为特殊的DFS和BFS 用单链表储存树和图时,从每一个节点的头指针只能储存当前节点能到达的下一层的节点 宽度优先遍历没有进行递归所以每一次搜索都是以头结点指向的位置 例如 1->2 1->3 1->5 2->8 3->6 3->7即h[1]->5->3->2->-1;h[2]- 阅读全文
摘要:
树和图的存储方式是用链表来实现。 一般较常使用的单链表和邻接矩阵 由于目前只学了单链表就只叙述下单链表的实现 单链表:(这里使用数组模拟的方式) 单链表实现树和图的储存即开一个几个数组:e[i](储存当前节点的数值)h[i](储存每个节点的数值的头指针)ne[i](储存每个节点指向的下一个节点) 1 阅读全文
摘要:
质数筛: 暴力筛代码: 1 bool check_prime(int n) 2 { 3 if(n==1) return 0; 4 for(int i=1;i<=n;i++) 5 if(n%i==0) return 1; 6 return 0; 7 } 六筛法代码: 1 bool check_prim 阅读全文
摘要:
1,pair的应用 pair是将2个数据组合成一组数据,当需要这样的需求时就可以使用pair,如stl中的map就是将key和value放在一起来保存。另一个应用是,当一个函数需要返回2个数据的时候,可以选择pair。 pair的实现是一个结构体,主要的两个成员变量是first second 因为是 阅读全文