数据结构
文章平均质量分 64
Lcomyn
这个作者很懒,什么都没留下…
展开
-
POJ 2014.10.19 并查集刷题记录
2014.10.19各种强化练习并查集(虽然正题是排列组合。。。) POJ的界面无语了,刷了一天的题,只有食物链是中文版。。。题意各种不解,各种坑爹翻译,各种脑补题意。题目不按顺序排列,大致按难度升序排序;先贴出并查集简单操作初始化for (i=1;i father[i]=i;查找int find(int x)(路径压缩){ if (x!=fathe原创 2014-11-05 13:56:28 · 1281 阅读 · 0 评论 -
【BZOJ 3083】遥远的国度
BZOJ 3083 遥远的国度这题的与 HAOI 2015T2 的不同点在于其有换根操作,但按照普通的思路我们可以发现,换根之后树的形态会有改变,每个节点的子树会发生改变,所以我们来分类讨论。修改链的操作不会发生改变,现在只考虑子树minn。为了方便,我们定义现在的换的“根节点”为root(但实际上树的根节点为1),子树根为x,黑圈标明查询范围;情况一 x=root,很显然此时应当原创 2015-05-14 11:13:59 · 2776 阅读 · 1 评论 -
【codevs 3304~3306】水果姐逛水果街系列
这题的坑开了很久了,3305大概是在NOIP之前学线段树的时候AC的,3306也是当时学完LCA后不断提交不断WA,当时基本已弃坑。。。最近学了树链剖分之后似乎觉得这俩题可做,于是搞了一个晚上,终于搞完了(蒟蒻就是蒟蒻)。。。。。。3305 这个题是链上的裸线段树,分类讨论比较蛋疼,code:#include#include#includeusing namespace std;s原创 2015-05-14 21:44:27 · 1595 阅读 · 0 评论 -
翔特卡洛和解题报告
题目 : 定义:Ai=(1023imod109)xor(1025imod109)A_i=(1023^i \mod 10^9) xor (1025^i \mod 10^9) 求 : Sum=∑i=l1r1∑i=max(i,l2)r2maxk=ijA[k]−mink=ijA[k]Sum=\sum_{i=l_1}^{r_1} \sum_{i=max(i,l_2)}^{r_2} \max_{k=i}^原创 2015-05-25 21:21:10 · 935 阅读 · 0 评论 -
【NOI 2010】能量采集&&超级钢琴
其实这两个题一点关系都没有,同一天做的,写在一起= = 能量采集 ans=∑x=1n∑y=1m2∗gcd(x,y)+1ans=\sum_{x=1}^{n}\sum_{y=1}^{m} 2*gcd(x,y)+1 ∑x=1n∑y=1m[d|gcd(x,y)]=⌊nd⌋∗⌊md⌋\sum_{x=1}^{n}\sum_{y=1}^{m}[d|gcd(x,y)]=\lfloor \frac {n}{d}原创 2015-07-11 17:03:36 · 979 阅读 · 0 评论 -
【SHOI 2008】【BZOJ 1018】堵塞的交通traffic
发现很多有关区间联通问题的题线段树都可以做,不论是1列还是2列。这题的易错点在于两个端点x,yx,y之间的可行路径不一定在区间[x,y][x,y]之间,有可能是从其他区间绕过来的,想明白这一点,区间的更新又与1列的情况基本类似,这题就很好做了。 code:#include<iostream>#include<cstdio>#include<cstring>#include<algorithm原创 2015-07-11 16:38:11 · 1665 阅读 · 0 评论 -
【JSOI 2008】【BZOJ 1014】火星人prefix
这题其实很奇怪,一眼看出fhq treap+字符串hash。。。 结果在BZOJ被卡常了,结果学长告诉我了一些优化,有些自己还不会写,只写了inline和吧unsigned long long改为unsigned int。。。 结果时间少了一半,谁能告诉我为什么。。。#include<iostream>#include<cstdio>#include<cstring>#include<cs原创 2015-07-04 21:56:28 · 935 阅读 · 0 评论 -
【BZOJ 1146】【CTSC 2008】网络管理network
一句话题意,树链上带修改区间第k大 感觉可以dfs+主席树O(nlog2n)O(n\log^2n)过掉,但我不会写= = 于是写的线段树套平衡树+链剖+二分(修改O(nlog3n)O(n\log^3n),查询O(nlog4n)O(n\log^4n)慢了好多啊QAQ) 这里简单介绍一下区间第K大做法,对于每个线段树所”管辖“的范围,建一棵相应范围内的平衡树(我用的Treap);修改时,修改原创 2015-07-27 17:04:32 · 1002 阅读 · 0 评论 -
NOI 2015 滞后赛解题报告
报同步赛的时候出了些意外,于是只能做一做“滞后赛”了2333 DAY1 T1离线+离散化搞,对于相等的部分直接并查集,不等部分查看是否在同一并查集中即可,code:#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int t,n;int father[20原创 2015-08-14 15:38:39 · 1464 阅读 · 0 评论 -
后缀数组学习笔记
后缀数组是一个处理字符串的有力工具,基本用途有模式串匹配和后缀最长公共前缀;例题 【JSOI 2007】【BZOJ 1031】字符加密ciper 后缀数组的躶体,现将字符串复制成环,然后输出sa[i]<lensa[i] \lt len的s[sa[i]−1]s[sa[i]-1]即可,code:#include<iostream>#include<cstdio>#include<cstrin原创 2015-07-25 16:53:21 · 778 阅读 · 0 评论 -
树链剖分学习笔记
暂时搞完一系列字符串算法之后,开始了树链剖分算法的学习。树链剖分算法,说白了就是一种特殊的DFS序(通过把节点分为重节点和轻节点来保证线段树的时间复杂度)然后在线段树上乱搞。题目分为点权和边权两类,点权好理解一些,边权可以转化为边在树中指向节点的权值。网上博客挺多的,不一一赘述了。上习题。ZJOI 2008 BZOJ 1036 COGS 1688 树的统计Count点权的模板题,c原创 2015-05-13 20:27:16 · 724 阅读 · 0 评论 -
AC自动机学习记录
学完了Trie树和KMP算法,我们就可以继续学习AC自动机了。。。AC自动机,全名Aho-Chorasick string match(不是所有题都可以AC的意思= =,否则OI比赛还有什么意义),由于多模板的字符串匹配,其基本做法是在Trie树上建立fail指针(基本相当于KMP算法中next数组),然后在Trie上进行KMP即可,不多说了,直接上习题。COGS 1913 AC自动机的裸原创 2015-04-29 19:44:18 · 783 阅读 · 0 评论 -
线段树学习记录
学完了自己半残不残的Tarjan算法,为于机房同步,我开始学习线段树。。。。。。先给出线段树定义:线段树是一种二叉搜索树,与区间树相似,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点。使用线段树可以快速的查找某一个节点在若干条线段中出现的次数,时间复杂度为O(logN)。而未优化的空间复杂度为2N,因此有时需要离散化让空间压缩。(摘自百度百科)先介绍一下我的线原创 2014-11-05 13:52:41 · 1406 阅读 · 0 评论 -
fhq Treap模板
#include#include#include#include#includeusing namespace std;struct treap_node{ treap_node *left,*right; int wgt,size,fix; char val; treap_node(char val): val(val) {left=right=NULL; size=wgt=1原创 2015-02-08 14:53:24 · 1401 阅读 · 1 评论 -
特殊做法类线段树
有一类神奇的线段树,我们来总结一下。。。。--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------原创 2014-12-14 10:02:22 · 815 阅读 · 0 评论 -
线段树模板
区间更新,区间查询(单点更新,区间查询懒得写了,修改一下insert参数吧)code:#include #include#includeusing namespace std;struct hp{ long long value;}node[800001];int n,m;long long ans;long long a[200001]={0},delta[2000001]原创 2015-02-08 15:01:54 · 682 阅读 · 0 评论 -
旋转式 treap 学习记录
学完模版后就开始在COGS上刷题了,但一直没有整理在一起,发此文记录一下(操作名称参见 treap 模版 http://blog.csdn.net/lcomyn/article/details/42582627)COGS 62 HNOI 宠物收养所题意很简单,大致就是求前驱和后继中较接近x值的点,所需操作insert(包括tlr,trr,下同),delete,tpred,tsucc;需要记原创 2015-01-14 16:25:24 · 1303 阅读 · 0 评论 -
Treap模版
为了准备省选,终于学了平衡树(Treap),晚上的资源很多,这里只对Treap做一些简单介绍顾名思义Treap=tree+heap,具体来说就是节点的value值是一棵二叉查找树,fix值是一个小根堆。由于fix是随机分配的,可以看作Treap是随机平衡的。经过严格的数学证明,可以证明时间复杂度为O(lgn),这里不再给出。每在BST中加入一个节点,就随机分配一个fix值,如果此时不满足最原创 2015-01-10 13:54:35 · 1081 阅读 · 0 评论 -
【BZOJ 3110】【ZJOI 2013】K大数查询
树状数组套线段树+二分答案 code:#include#include#includeusing namespace std;struct node{ node *l,*r; int size,add; node(){l=r=NULL; size=add=0; }};node *tree[800000];int node1[200000],delta[200000],n,m原创 2015-03-27 21:48:49 · 607 阅读 · 0 评论 -
主席树学习记录
搞了一段时间网络流后,最后还是回到了数据结构。。。主席树,引fotile主席的一段话:..这个东西是当初我弱不会划分树的时候写出来替代的一个玩意..被一小撮别有用心的人取了很奇怪的名字> 想法是对原序列的每一个前缀[1..i]建立出一颗线段树维护值域上每个数的出现次数,然后发现这样的树是可以减的,然后就没有然后了其实是一种比较好理解的数据结构(至少静态查找时是如此),我们对于每原创 2015-03-18 20:36:45 · 860 阅读 · 1 评论 -
可持久化(非旋转式)treap 学习记录
原来的treap是通过左旋右旋来维护最小堆性质,但在此处,由于是区间操作,我们需要截出一整段区间(也就是一段treap),并且在重新插入回去的时候,不能够破坏最小堆性质,于是我们可以用merge(合并操作)和split(拆分操作)来维护原创 2015-01-18 16:59:28 · 5655 阅读 · 4 评论 -
区间相关值问题
这是一篇奇怪向的总结== 区间max,区间和。。。线段树直接搞 区间中位数,树套树或许可以但或许不优。。。 区间mex(无修改):首先[1,x],1≤x≤n[1,x],1 \le x \le n单调扫一遍即可, 同时处理出该位置上的数下一次出现位置,记为next[i]next[i] 然后我们对询问排序,考虑ii上数对后面数的影响,即为[i,next[i]−1][i,next[i]-1]上m原创 2015-10-22 17:18:34 · 699 阅读 · 0 评论