树
文章平均质量分 77
triplebee
人狠话不多
展开
-
poj2001
第一个不依靠模板拍出来的字典树,题目比较水,开始空间没开对WA了无数次,纠结了一个多小时#include#include#includeusing namespace std;char dic[10000][25];//这里一开始开了20,死活不对typedef struct node{ int count; struct node *next[26];}node;原创 2014-03-15 12:10:15 · 3656 阅读 · 0 评论 -
POJ1839
#include#includeusing namespace std;struct node{ int left,right; int num,len;}tree[50005*4];struct line{ int x1,x2,flag,y;}lines[2020];bool cmp(const struct line &a,const struct l原创 2014-04-24 20:43:09 · 760 阅读 · 0 评论 -
HDU4027
本以为对线段树还是比较熟悉的,但是这题改变了wod原创 2014-06-05 18:07:42 · 5270 阅读 · 2 评论 -
codeforces 438D
在某位不知名的大大推荐下做了这题,和我上一篇的线段树很像,于是怒拍,思想基本相同,记录区间最大值,当最大值小于取模时可以剪枝。今后再遇到此类问题算是能解决了// file name: d.cpp //// author: huangjipeng //// creat原创 2014-06-06 11:40:59 · 4773 阅读 · 0 评论 -
POJ2155
#include#include#include#include#include#include#include#include#includeusing namespace std;int n,m;struct nodey{ int l,r,num;};struct nodex{ int l,r; node原创 2014-09-22 21:07:43 · 629 阅读 · 0 评论 -
POJ1656
比较水的题,数据量暴力可破,但是你以为这样就结束了吗?如果数据量大一点呢原创 2014-09-23 16:16:02 · 865 阅读 · 0 评论 -
hdu3966_树链剖分
最近在强化知识点深度,发现树链剖分不是很会写了。回顾一下修改操作:若两个点在同一条链上,则直接修改这段区间。若不在同一条链上,修改深度较大的点到其链顶端的区间,同时将这个点变为他所在链顶端的父亲,循环操作直到这两个点在同一条链上,就可以用上一种方法了。没有用LCA写是因为以前被坑过,不但没有这种方法好写,效率也不太让人满意。主要是对第二种情况如何写有所遗忘,写道模版再给自己提个原创 2014-10-26 16:47:19 · 1040 阅读 · 0 评论 -
主席树POJ2104
求区间第k大数是多少用我惯用的线段树写法似乎不适合写主席树,看别人的代码好半天才看懂用root表示每一个前缀树的根,思想大致是由第i-1个树构成的树建第i个树,由于加入一个数只需要log级别修改,所以建树效率很高。主席树的精髓在于可持续化,就是说之前区间的信息不去修改它,递推加入新元素的时候,要新开log个空间来存储。因为主席树本身比较占用空间,只需改变这些空间的指向就可以重复利用不变原创 2014-11-15 18:28:26 · 1119 阅读 · 0 评论 -
Leetcode 23 Merge k Sorted Lists
标为hard难度的一道题,有点interesting,题意为把K条有序的链表归并为一条有序的链表。开始想也没想直接暴力n*k的复杂度,果不其然T了,数据出现了n=10000,k=10000的情况,不然怎么对得起hard难度呢?合并两个链表的复杂度为O(n+m),如果用在这题中,虽然合并次数将很多,但到后来会形成长链和短链的合并,长链的最后一部分往往是直接接入的,因而实际的平均复杂度并不会很高,但具体是多少,也不太好分析。这种想法在一般的情况下,应当是优于第一种做法的,可是后来我想到,如果K个链表原创 2016-09-01 20:26:16 · 3751 阅读 · 1 评论