数据结构
文章平均质量分 76
wxyfennie
这个作者很懒,什么都没留下…
展开
-
根据中序遍历和后续遍历,输出树的层次遍历
例如输入:124859367482591637输出:123456789S1:先序遍历的第一个一定是根结点,在中续遍历序列中找到根结点位置S2:先序遍历的[pre+1,pre+gen]的位置一定是左子树,中序遍历的[mid,mid+gen]一定是左子树,因此递归寻找左子树,build(pre+1,mid,gen)先序遍历的[pre+gen+1,n]的位置一定是原创 2016-05-25 09:08:08 · 2089 阅读 · 0 评论 -
HDU1166敌兵布阵-线段树求和
HDU1166敌兵布阵-线段树求和#include#include#include#includeusing namespace std;const int maxn = 200005*2;long long n,dat[2*maxn-1];void init(int n_){ n = 1; while(n<n_)n*=2; for(int i原创 2016-10-10 15:40:22 · 351 阅读 · 0 评论 -
线段树内容详解
hdu I hate it| 0 || 1 || 2 || 3 || 4 || 5 || 6 || 7 || 8 || 9 || 10 ||11||12||13||14||15|线段树的结构无非就是原创 2016-10-10 14:14:20 · 347 阅读 · 0 评论 -
九度题目1149:子串计算
题目描述:给出一个01字符串(长度不超过100),求其每一个子串出现的次数。输入:输入包含多行,每行一个字符串。输出:对每个字符串,输出它所有出现次数在1次以上的子串和这个子串出现的次数,输出按字典序排序。样例输入:10101样例输出:0 201 21 310 2101 2[ map原创 2016-09-07 10:05:59 · 1568 阅读 · 0 评论 -
九度OJ-浙大1008最短路径问题
题目大意:就是一个单源最短路的问题,按照dijkstra算法做就行了。关键是要除了cost最小的问题,就在(dis[ed.to]>=dis[e.to]+ed.dis)的时候更新一下就可以了,不能用有没有访问过该节点来判断需不需要更新。这题的测试数据非常水,即使你只是简单地敲出了一个最短路,好像也差不多能过。#include#include#include#incl原创 2016-08-07 21:44:22 · 753 阅读 · 0 评论 -
九度OJ题目1201:二叉排序树
纪念一下终于在二叉树上的代码准确率,但还是在给root分配空间的时候忘记要写了 悲剧还没看到提示要考虑忽略重复元素,这个好解决题目描述: 输入一系列整数,建立二叉排序数,并进行前序,中序,后序遍历。输入: 输入第一行包括一个整数n(1 接下来的一行包括n个整数。输出: 可能有多组测试数据,对于每组原创 2016-08-27 14:53:26 · 1366 阅读 · 0 评论 -
九度OJ,题目1009-二叉搜索树
题目1009:二叉搜索树 时间限制:1 秒内存限制:32 兆特殊判题:否提交:7537解决:3335题目描述: 判断两序列是否为同一二叉搜索树序列输入: 开始一个数n,(1接下去一行是一个序列,序列长度小于10,包含(0~9)的数字,没有重复数字,根据这个序列可以构造出一颗二叉搜索树。接下去的n行有n个序列,每个序列格式跟第一个序列一原创 2016-06-13 11:01:53 · 485 阅读 · 0 评论 -
pair 和 map结合应用——POJ 3096
pair用法:1、定义pair变量名;eg: paira;2、赋值a = make_pair("a","b");map用法:1、定义mapeg: map,int>m;2、赋值m[键] = 值;eg: m[a]++;Surprising StringsTime Limit: 1000MS Memory Lim原创 2016-06-08 15:17:42 · 556 阅读 · 0 评论 -
POJ 3253 Fence Repair 优先队列
#include#include#include/** 使用longlong保存结果* 优先队列解决问题* 哈夫曼树*/using namespace std;priority_queue, greater > pq;int a[20005];int main(){ int n; cin>>n; for(int i= 0 ; i < n ;原创 2016-04-28 14:44:09 · 405 阅读 · 0 评论 -
hdu Color the ball树状数组
hdu Color the ball本来树状数组是从上往下求和,从下往上更新的。但是在这里的话,需要从上往下更新树枝,从下往上求值。每次更新[1~b]区间的值+1,[1,a]区间的值-1.#include#include#includeusing namespace std;const int MAXN_N = 100005;int n,a,b;int Bit[MAXN_N+1原创 2016-10-11 21:43:26 · 358 阅读 · 0 评论