数据结构
文章平均质量分 71
我爱AI_AI爱我
不爱
展开
-
初识块状数组/块状链表(讲解+ 例题)
As we all known.数组定位的复杂度为O(1),插入删除的复杂度是O(n)链表定位的复杂度是O(n),插入删除的复杂度是O(1)块状数组结合了链表和数组的优点,使得所有操作的复杂度均为O(√n)代码:#include #include #include #include #include #include #define ll long longusing n原创 2016-07-30 16:48:38 · 5951 阅读 · 1 评论 -
利用树状数组(对数组左侧比数组小的点的个数进行维护)
题目链接http://acm.hdu.edu.cn/showproblem.php?pid=5775题意:T组数组,长度为n的数组,n个元素属于[1,n]不重复,即是1-n全排列中的一种。对其进行冒泡排序,问在冒泡排序的过程中从1-n的数字所到达的最右边的点减去最左边的点的距离分析:每个数字i都有一个初始位置,和一个结束位置,按数字i不方便,仍按照数组a[i]。a[i]中i +1表示a[i原创 2016-07-29 22:41:29 · 430 阅读 · 0 评论 -
浅谈树状数组(伪讲解)
树状数组主要用于解决:点更新,区间查询的问题。都是log(n)的复杂度树状数组与线段树类似,都是一个树包含多个树。但树状数组更为随意,但更符合机器的规则,二进制运算明显更快。与线段树的区别:线段树试用范围更广,解决的问题比树状数组多。树状数组的代码明显更加简短。树状数组的大小只需开一个和原数组大小一样的即可附主要代码://修改操作 void add(int k,int原创 2016-07-29 22:32:09 · 270 阅读 · 0 评论 -
字典树习题
http://acm.hdu.edu.cn/showproblem.php?pid=1251hdu1251题意:先几个单词空一行再给几个前缀,判断每个前缀在单词中出现的次数做法:设置count在字典树中,对于字符串,走到每个字符时都把count ++。查找到时候,如果未走到头就是1,走到头了就是count原创 2016-02-22 15:35:10 · 446 阅读 · 0 评论 -
字典树讲解
一.字典树解决了什么问题?字典树对于查找字符串很快,尤其是判断一个字符串是否为另一个字符串的前缀,以及前缀的长度。二.字典树的建立字典树的链表版本很好理解。首先定义一个structstruct node{ node *nexta[26]; int countx;//有相同前缀的字符出现的次数 node() { memset(原创 2016-02-22 15:14:44 · 540 阅读 · 0 评论 -
并查集
并查集可以理解为集合目前可以实现的功能有,判断两个点是否在同一个集合中,如果不在同一个集合中,把两个点的集合合并成一个。主要应用于判断是否有环,以及最小生成树中。代码与思路本身难度不高。每次都寻找该点的树根,判断两点的树根是否相等即可。附核心代码:int p[1005];//p[x] == x ? 判断是否该点就是树根,注意是双等号int Find(int x){原创 2016-07-12 15:32:20 · 242 阅读 · 0 评论 -
最小生成树
链接:http://exam.upc.edu.cn/problem.php?id=2399bzoj 3943题意:n个队伍进行比赛,任意两个队比赛得分为这两个队的价值的异或。每次两支队伍进行比赛,都会淘汰一支队伍,求最大的异或和。解析:n个队伍,n - 1次比赛。满足这个条件,又是求最大值,就是#include #include #include #include #inc原创 2016-08-22 15:25:50 · 354 阅读 · 0 评论 -
生成树模板(Prime + Kruskal)
//cost[i][j]表示到i,j两点的价值.lowc[i]表示当前状况下点i到集合A的价值double prim(double cost[][MAXN],int n)//点从0~n-1{ int i,j,p; double minc,res=0; memset(vis,0,sizeof(vis)); vis[0]=1; for(i=1; i<n;原创 2016-08-22 15:28:46 · 267 阅读 · 0 评论 -
poj3376 字典树 + 扩展kmp
http://acm.hust.edu.cn/vjudge/contest/view.action?cid=70325#problem/Tkuangbin专题十六字最后一发题意:n个字符串,每个字符串长度为l,将字符串两两自由组合一共有(n * n种方案)判断其中组合之后为回文串的字符有多少个做法:首先由两个字符串a,b.要使它们能组成回文串有三种情况1.alen a是b的原创 2016-02-22 17:14:44 · 846 阅读 · 0 评论