数据结构
文章平均质量分 67
努力只为接近梦想
这个作者很懒,什么都没留下…
展开
-
hdu3487 (splay伸展树 区间翻转,切割,插入)
#include #include #include #include #include #include #include #define N 300010using namespace std; //hdu3487 (splay伸展树 区间翻转,切割,插入) int pre[N], key[N], ch[N][2], size[N], rev[N], root, tot,原创 2015-05-31 09:49:32 · 545 阅读 · 0 评论 -
hdu2639----求第k大01背包模板题
#include #include #include #include #include #include #include #include #include #define LL long long#define inf 0x7fffffff#define N 1100using namespace std; //hdu2639----求第k大01背包模板题int原创 2014-04-02 19:07:26 · 437 阅读 · 0 评论 -
poj3481 用伸展树来做
#include #include #include #include #include #include #include //poj3481 伸展树(包括删除的操作)#define N 100010using namespace std;int pre[N], key[N], ch[N][2], num[N], root, tot;/*4、删除最大最小:a原创 2015-05-30 22:59:52 · 491 阅读 · 0 评论 -
KMP模板
void getnext(int h) //获得next数组里的值的函数{ int j=0, k=-1; next1[0]=-1; while(jh) { if(k==-1||a[j]==a[k]) { k++; j++; if(a[j]==a[k]) next1[j]=next1[k]; else next1[j]=k; } el原创 2015-05-05 19:59:03 · 357 阅读 · 0 评论 -
Manacher算法 最长回文子串
回文串定义:“回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。回文子串,顾名思义,即字符串中满足回文性质的子串。经常有一些题目围绕回文子串进行讨论,比如POJ3974最长回文,求最长回文子串的长度。朴素算法是依次以每一个字符为中心向两侧进行扩展,显然这个复杂度是O(N^2)的,关于字符串的题目常用的算法有KMP、后缀数组、AC 自动机,转载 2015-05-24 12:43:20 · 351 阅读 · 0 评论 -
hdu4417(划分树)--二分
#include #include #include #include #include #include #include //hdu4417(划分树)--二分#define N 100010using namespace std;int sorted[N], p[20][N], num[20][N];void build(int l, int r, int原创 2015-05-30 22:54:54 · 585 阅读 · 0 评论 -
邻接表(spfa算法---单源最短路)
#include #include #include #include #include #include #include #include #define inf 1<<30 #define N 10010using namespace std; //使用邻接表hdu2544 (spfa算法)int pre[210原创 2015-05-31 10:01:21 · 499 阅读 · 0 评论 -
Div2(317C)Div2(219) B 二分法判定
#include #include #include #include #include #include #include #include #define LL long long //Div2 (218C)二分法判定using namespace std;LL a, b, c, s1, s2, s3, p1, p2, p3, k;LL max1(LL a1, LL原创 2015-05-31 10:12:12 · 391 阅读 · 0 评论 -
基本树形dp及例题
#include #include #include #include #include #include #define N 6005 //树形dp POJ2342using namespace std;struct tree{ int child, father, brother;原创 2015-06-02 14:06:07 · 450 阅读 · 0 评论 -
题意:给两个序列(长度达10^5,序列内的数都不同且都小于10^5),求这两个序列的最长公共序列的长度
#include #include #include #include #include #include #include #include #include #define LL long long#define N 100100using namespace std;int a[N], b[N], dp[N]; //nyoj See LCS again/*原创 2015-06-02 14:06:34 · 489 阅读 · 0 评论 -
状态压缩dp例题
#include #include #include #include #include #include #include #include #define LL long long #define N 10010#define mod 100000000 //poj3254using namespace std;原创 2015-06-04 21:30:14 · 658 阅读 · 0 评论 -
七大排序算法总结(含优化)
冒泡排序#include #define N 100using namespace std;int a[N];void bubbleSort(int n) //冒泡排序优化{ int t, j, flag=n, temp; while(flag>0) { j=flag; flag=0; for(t=1; t<j; ++t) //其实冒原创 2015-06-28 16:37:14 · 852 阅读 · 0 评论 -
基数排序(LSD)
示例代码:#include #include using namespace std;//基数排序(LSD)从最低位到最高位进行如此的分配收集void print(int a[], int n){ for(int t=0; t<n; ++t) { if(t+1<n) { printf("%d ", a[t]); } else { printf("%d\n"原创 2015-08-09 23:03:43 · 1030 阅读 · 0 评论 -
A星算法,找寻最短路径
#include #include #include #include #include #define N 1000#define inf 1<<30;using namespace std;/* a星算法,找寻最短路径 算法核心:有两个表open表和close表 将方块添加到open列表中,该列表有最小的和值。且将这个方块称为S吧。 将S从open列表移除,然后添加原创 2015-08-14 17:56:47 · 4135 阅读 · 1 评论 -
最小费用最大流(spfa、EK算法及(构图----尤其重要))
#include #include #include #include #include #include #include #include //poj2195最小费用最大流(spfa、EK算法及(构图----尤其重要))#define inf 1<<30 #define N 210using namespace原创 2015-05-31 10:08:40 · 654 阅读 · 0 评论 -
矩阵(二分法)
#include #include #include #include #include #include #include #include //poj3233 矩阵二分法using namespace std;int n, m;struct matrix{int a[35][35];void init(){for(int j=0; j<35; ++j){for(int t原创 2015-05-31 10:11:26 · 1103 阅读 · 0 评论 -
hdu2824欧拉函数模板
#include #include #include #include #include #include #include #include #include #define LL long long#define inf 0x8fffffff #define N 3100000using namespace std; //hdu2824LL phi[N];原创 2014-03-09 20:41:09 · 544 阅读 · 0 评论 -
SBT poj3481
Size Balanced Tree(SBT)平衡二叉树http://blog.csdn.net/acceptedxukai/article/details/6921334例题:poj3481#include #include #include #include #include #include #include #define N 100010using原创 2015-05-30 22:59:03 · 335 阅读 · 0 评论 -
hdu 1540 线段树 点所在的区间最大连续长度
#include #include #include #include #include #include #include //hdu 1540 线段树#define N 50005 //单点更新,求一个点所在区间的最大连续长度using namespace std;int a[N];原创 2015-05-05 20:01:34 · 362 阅读 · 0 评论 -
不可重叠的最长重复子串(后缀数组)
#include #include #include #include #include #include #include //POJ1743 求不可重叠的最长重复子串(后缀数组)#define maxn 20005using namespace std;int wa[maxn],wb[maxn],wv[maxn],Ws[max原创 2015-05-14 23:46:51 · 1049 阅读 · 0 评论 -
Dijkstra算法,单源最短路径(一个起点到各个点的最短距离)
#include #include #include #include #include #include //hdu2544#include //Dijkstra算法,单源最短路径(一个起点到各个点的最短距离) #define inf 9999999using namespace std;int n, map[110][110], dis[110], vis[原创 2015-05-31 09:51:43 · 777 阅读 · 0 评论 -
网络流(最大流---Edmonds-Karp算法)
#include #include #include #include #include #include #include #include #define inf 100000000#define N 250using namespace std; //poj1273 hdu1532 网络流(最大流---Edmonds-Karp算法)int map[N]原创 2015-05-31 09:57:37 · 534 阅读 · 0 评论 -
poj1466 二分图最大独立集
#include #include #include #include #include #include #include //poj1466 二分图最大独立集#define N 510using namespace std;int a[N][N], use[N], vis[N];int n;/*二分图最大独立集=顶点数-二分图最大匹配独立集:图中任意两原创 2015-05-31 09:50:56 · 357 阅读 · 0 评论 -
rmq问题(区间最值)
#include #include #include #include #include #include //rmq问题(区间最值) ST算法#define N 100005using namespace std;int a[N], dp1[N][20], dp2[N][20];//dp1存放的是最大值, dp2存放的是最小值,两个二维数组第一维表示原创 2013-11-05 15:05:44 · 493 阅读 · 0 评论 -
Dijkstra算法(单源最短路径,单源分别是终点和起点)
#include #include #include #include #include #include #include //Dijkstra算法(单源最短路径,这道题中单源分别是奶牛返回时统一的起点(Dijkstra1函数),奶牛统一到达的终点(Dijkstra2函数)#define N 1010 //poj3268#define inf 100000000u原创 2015-05-31 09:54:34 · 1257 阅读 · 0 评论 -
Floyd算法,求图中两个点之间的最短距离
#include #include #include #include #include #include #include //Floyd算法,求图中两个点之间的最短距离 #define inf 1000000 //hdu2544 using namespace std;int n, map[110][110];int main(){ int i, t原创 2015-05-31 09:52:29 · 2619 阅读 · 0 评论 -
求两条直线的关系及交点
给你两条直线,判断这两条直线是否共线,相交,不相交(即平行),相交的话输出交点。 判断平行,然后通过叉积判断是否共线。 平行判断可以判断两条直线的斜率是否相等。 交点的话,相当于联立方程组求解了。 这些方程看模板理解的,刚才搜了下,有人讲得比较清楚,借鉴下http://blog.csdn.net/dreamvyps/archive/2转载 2013-11-12 19:08:25 · 1104 阅读 · 0 评论 -
HNOI2002营业额统计 (伸展树---模板题)
#include #include #include #include #include #include #include //HNOI2002 (伸展树---模板题)#define N 100010#define inf 1<<30using namespace std;int pre[N], key[N], ch[N][2], root,原创 2015-05-30 22:56:46 · 442 阅读 · 0 评论 -
最小生成树prime算法(和Dijkstra算法很类似,除了下面有个地方不同)
#include #include #include #include #include #include #include //poj1258 最小生成树prime算法(和Dijkstra算法很类似,除了下面有个地方不同)#include #define inf 10000000using namespace std; int n, vis[110], dis[1原创 2015-05-31 09:56:24 · 2213 阅读 · 0 评论 -
哈夫曼树实现
#include #include #define inf 1<<30using namespace std;//哈夫曼树实现//哈夫曼树的特征:如果有n个叶子节点的话,则总结点数为2*n-1。越频繁访问的编码越短struct node{ int parent, lson, rson; int val; //访问次数};void createTree(node p原创 2015-08-15 19:39:38 · 868 阅读 · 0 评论