随笔分类 - 数据结构
摘要:题意是指第i此插入操作,插入一条长度为i的线段,左端点在b[i],删除某一条线段,问每次插入操作时,被当前线段完全覆盖的线段的条数。题解:对于新插入的线段,查询有多少个线段左端点大于等于该线段的左端点。 再查询有多少个线段的右端点大于该线段右端点, 两者之差就是答案。用两个树状数组搞定。时间复杂度n...
阅读全文
摘要:POJ 2406其实就是一个简单的kmp应用:ans = n % (n - f[n]) == 0 ? n / (n - f[n]) : 1其中f是失配函数 1 //#pragma comment(linker, "/STACK:1677721600") 2 #include 3 #include ...
阅读全文
摘要:HDU 3065AC自动机 这个也可以拿来做模板了,使用静态数组模拟建树 1 //#pragma comment(linker, "/STACK:1677721600") 2 #include 3 #include 4 #include 5 #include 6 #include...
阅读全文
摘要:裸的AC自动机,这倒题不能使用静态数组模拟建树的过程,10000*50*26这样会爆内存,所以使用指针,使用结构体动态分配new这个可以用来做模板了 1 //#pragma comment(linker, "/STACK:1677721600") 2 #include 3 #include ...
阅读全文
摘要:HDU 4825对于给定的查询(一个整数),求集合中和他异或值最大的值是多少按位从高位往低位建树,查询时先将查询取反,然后从高位往低位在树上匹配,可以匹配不可以匹配都走同一条边(匹配表示有一个异或值为1的边,选择当然最好;不能匹配说明不存在一条异或值为1的边,那么只存在一条为0的边,也不得不选) 1...
阅读全文
摘要:字典树建树,然后dfs搜索即可 1 //#pragma comment(linker, "/STACK:1677721600") 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #in...
阅读全文
摘要:HDU 3973通过哈希函数将一个字符串转化为一个整数,通过特定的方式可以使得这个哈希值几乎没有冲突(这就是关键之处,几乎没有视为没有= =!, 其实也可以考虑实现哈希冲突时的处理,只是这道题没必要而已),然后使用线段树维护修改后的哈希值。因为输入的字符串只有26个,考虑使用一个大于等于26的素数p...
阅读全文
摘要:1 //#pragma comment(linker, "/STACK:1677721600") 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #incl...
阅读全文
摘要:题目链接Alternating Strings II题意是指给出一个长度为n的01串,和一个整数k,要求将这个01串划分为很多子串(切很多刀),使得每个子串长度不超过k,且每个字串不是01交替出现的串(例如01, 10, 101, 010, 101010这些都是01交替出现的串),求最少需要切多少次...
阅读全文
摘要:地址 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=73154#overview密码 acmore基础数据结构的专题,单调队列,单调栈,优先队列,堆,并查集,RMQ,线段树,树状数组A:HDU 3530单调队列不错的单调队列的题目 题解 ...
阅读全文
摘要:题意是说在水平轴上有很多建筑物(没有宽度),知道每个建筑物的位置与高度。有m个查询,每次查询位置x所能看到的天空的角度。方法是将建筑与查询一起排序,从左往右计算一遍,如果是建筑物,则比较最后两个(当前的与队尾的)斜率与队尾两个的斜率比较,如果较小则入队,否则一直出队尾元素直至满足条件(因为斜率为负数...
阅读全文
摘要:有一个矩阵,每次查询一个子矩阵,判断这个子矩阵的最大值是不是在这个子矩阵的四个角上裸的二维RMQ 1 #pragma comment(linker, "/STACK:1677721600") 2 #include 3 #include 4 #include 5 #include 6 #inc...
阅读全文
摘要:题意是说给出一棵树,N(10^5)个顶点,以及每条边的权值,现在需要选择连续的K个点(顶点编号连续),可以被选出来的条件是: 若d[i]代表顶点i到树上其他点的距离的最大值,使得区间[a, b]的d值的最大差值不大于Q, 也就是max(d[a], d[a ...
阅读全文
摘要:题意是说给出一个序列,现在要求出这个序列的一个最长子区间,要求子区间的最大值与最小值的差在[m, k]范围内,求区间长度做法是维护两个队列,一个维护到当前位置的最大值,一个维护最小值,然后计算当前节点i作为右端点的最常区间长度,那么扫描两个队列,维持单调性。然后比较两个队列头的差值,1.如果差值满足...
阅读全文
摘要:ZOJ 3597题意是说有n把枪,有m个靶子,每把枪只有一发子弹(也就是说一把枪最多只能打一个靶子), 告诉你第 i 把枪可以打到第j个靶,现在等概率的出现一个连续的P把枪,在知道这P把枪之后,你被允许选择一个连续的Q个靶子,使得这P把枪所打到的靶子的数目最多,问打到的靶子数目的期望值是多少。这题通...
阅读全文
摘要:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1542赛后发现这套题是2014东京区域赛的题目,看了排名才发现自己有多low = =!题目大意是这样的,给一个已经匹配了的括号序列,现每次操作就是在位置p将这个位置的括号反转,问要达到将这个序列重新变...
阅读全文
摘要:这是BC上的一道题,当时比赛没有做,回头看看题解,说是AC自动机,想着没有写过AC自动机,于是便试着抄抄白书的模板,硬是搞了我数个小时2000ms时限1800过了= = !这里就直接贴上BC的结题报告(#27):http://bestcoder.hdu.edu.cn/solutions.php100...
阅读全文
摘要:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5345给定序列P,定义序列S为P反复重复得到的一个无穷长的序列: ifP= 3423537, thenS= 3423537342353734235373423537...再定义...
阅读全文
摘要:直接套用模板,以后接着用这里还有一个素因子分解的模板 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #in...
阅读全文
摘要:没事做水了一道POJ的简单BFS的题目这道题的数据范围是20,所以状态总数就是(1 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include 1...
阅读全文

浙公网安备 33010602011771号