
数据结构
乄心
这个作者很懒,什么都没留下…
展开
-
POJ2299-归并排序
问:一串数字,经过最少多少次相邻两个数之间的交换可以得到 由小到大排序的数字串。#includeint a[500001],t[500001];__int64 sum;int n;void merge(int l,int m,int r);void merge_sort(int l,int r) //划分 与 递归{ int m; if(l<r) //注意条件! 一直划原创 2013-08-18 20:37:23 · 878 阅读 · 0 评论 -
离散化
sort(test,test+n);X=unique(test,test+n)-test;//原创 2014-06-01 14:58:44 · 629 阅读 · 0 评论 -
HDU1823 二维线段树 求最大值
Luck and LoveTime Limit: 10000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 5382 Accepted Submission(s): 1344Problem Description世界上上最远的距离不是原创 2014-08-23 19:56:59 · 986 阅读 · 0 评论 -
线段树+扫描线
参考:http://www.cnblogs.com/scau20110726/archive/2013/04/12/3016765.html分析:1.矩形比较多,坐标也很大,所以横坐标需要离散化(纵坐标不需要),熟悉离散化后这个步骤不难,所以这里不详细讲解了,不明白的还请百度2.重点:扫描线法:假想有一条扫描线,从左往右(从右往左),或者从下往上(从上往下)扫描过整个多边形原创 2014-08-24 10:48:41 · 1091 阅读 · 0 评论 -
UVA11235 RMQ
2007/2008 ACM International Collegiate Programming Contest University of Ulm Local ContestProblem F: Frequent valuesYou are given a sequence of n integers a1 , a2 , ... , an in non-decreasin原创 2014-08-27 10:51:18 · 770 阅读 · 0 评论 -
LA3942 Trie+DP
Each of the following S lines contains one word from the set. Each word will be at most 100 characters long. There will be no two identical words and all letters in the words will be lowercase.The原创 2014-08-28 14:03:42 · 769 阅读 · 0 评论 -
LA3938 线段树 动态求区间最大连续和
After doing Ray a great favor to collect sticks for Ray, Poor Neal becomes very hungry. In return for Neal's help, Ray makes a great dinner for Neal. When it is time for dinner, Ray arranges all the d原创 2014-08-28 16:02:46 · 972 阅读 · 0 评论 -
UVA11732 Trie
strcmp() is a library function in C/C++ which compares two strings. It takes two strings as input parameter and decides which one is lexicographically larger or smaller: If the first string is greater原创 2014-08-30 16:44:16 · 739 阅读 · 0 评论 -
线段树小结
如果是1~n 个数 那么我们知道线段树 最后一层 一定是n个结点! 那么 可得线段树 最多的结点数为 2^(log2(n)+1)-1 个单点更新HDU1754//9596209 2013-11-16 12:13:35 Accepted 1754 531MS 7184K 1579 B#include #includeusing namespace std;#define MA原创 2013-11-20 19:37:13 · 1030 阅读 · 0 评论 -
二叉堆小结
二叉堆基本操作:(可用优先队列模板)1.上升操作(可以用于插入,并不等于插入操作)2.下降操作(可以用于删除,并不等于删除操作)3.(知道了 1和2操作)要知道怎么删除堆内点!4.堆排序二叉堆 (小堆与大堆的合并运用)典例poj1442Black BoxTime Limit: 1000MS Memory Limit: 1000原创 2013-11-11 21:24:52 · 1063 阅读 · 0 评论 -
带权并查集小结
带权并查集:通过一个演算来推算poj 2492原创 2014-05-16 19:49:44 · 1140 阅读 · 0 评论 -
Splay小结
Splay基本操作:1.rotate() 旋转操作---包含三种情况2.splay() 伸展-----一般是旋到根或根的父亲的下面3.rotate_to() 先找到要伸展的结点,再splay;4.push_up() 向上维护根的信息5.push_down()向下下放延迟标记6.Cut() 删除一个区间7.insert()插入一个区间8.Flip()翻转一个区间9原创 2013-12-08 22:00:18 · 810 阅读 · 0 评论 -
POJ2513-并查集+欧拉通路+字典树
優YoU http://user.qzone.qq.com/289065406/blog/1304742541 大致题意:给定一些木棒,木棒两端都涂上颜色,求是否能将木棒首尾相接,连成一条直线,要求不同木棒相接的一边必须是相同颜色的。 解题思路:可以用图论中欧拉路的知识来解这道题,首先可以把木棒两端看成节点,把木棒看成边,这样相同的颜色就是同一个节转载 2013-08-31 20:46:27 · 845 阅读 · 0 评论 -
POJ3630-静态字典树
Phone ListTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 19758 Accepted: 6201DescriptionGiven a list of phone numbers, determine if it is consi原创 2013-09-01 14:23:44 · 828 阅读 · 0 评论 -
poj1363-栈与数组
RailsTime Limit: 1000MS Memory Limit: 10000KTotal Submissions: 21760 Accepted: 8723DescriptionThere is a famous railway station in PopPush City. Country there is原创 2013-09-01 22:29:46 · 710 阅读 · 0 评论 -
poj1751-最小生成树
HighwaysTime Limit: 1000MS Memory Limit: 10000KTotal Submissions: 7310 Accepted: 2014 Special JudgeDescriptionThe island nation of Flatopia is perfectly flat.原创 2013-09-01 22:36:57 · 874 阅读 · 0 评论 -
树的前序,中序,后序遍历。
输入树的前序与中序,输出后序。#include#include#includeusing namespace std;#define MAX 20void built(int n,char*s1,char*s2,char*s){ if(n<=0)return; int p=strchr(s2,s1[0])-s2; built(p,s1+1,s2,s); built(n-p-原创 2013-09-02 16:59:28 · 818 阅读 · 0 评论 -
树状数组小结
树状数组功能:(适用于:要求不断求区间和 || 不断更新区间)1.快速 求区间和2.快速 更新区间具体详细资料 见大白书 和 辅导资料.树状数组 ---运用了分块的思想。用lowbit函数来得到 地址下标.基本操作:1.lowbit()函数原理:利用了负数在计算机中的存储形式(按位取反+1),你会发现负数与其绝对值在存储上 最后一个1的位置是相同的 那么用& 就原创 2013-11-16 16:00:22 · 964 阅读 · 0 评论 -
两个数字串 (顺序+逆序) 判断是否相等
来自poj3349怎么比较 两个数字串 (顺序或逆序) 判断是否相等bool is_Same(int a,int b){ bool flag1,flag2; for(int i=0;i { flag1=true; for(int j=0;j if(snow[a][j]!=snow原创 2013-11-07 20:25:59 · 2096 阅读 · 0 评论 -
Treap小结
Treap(Tree+Heap)---是一种通过 rand() 来随机生成数字作为修正值来调整的平衡树。基本操作:1.旋转。2.插入(合并重复的),删除(懒惰删除)。3.查最值,求第k小,求排名。4.中序遍历就是从小到大的。5.维护附加关键字.1.求第k小:POJ1442//12321199 1442 Accepted 976K 204MS C++ 2080B原创 2013-11-29 20:20:02 · 740 阅读 · 0 评论 -
uvalive4487 带权并查集
两种操作,I p q v表示p^q = v,如果与之前有冲突, 则输出“The first i facts are conflicting.”其中i为之前所有的I操作的次数(算上当前冲突这次)。Q k p1p2..pk表示求p1^p2...^pk的值,输出值或“I don't know.”首先,I操作后面跟的参数个数不确定所以用if(sscanf(s, "%d%d%d", &p, &q,原创 2014-10-04 19:05:08 · 773 阅读 · 0 评论