随笔分类 -  数据结构

摘要:传送门 这道题其实就是询问区间众数且强制在线。 若题目是询问区间是否有过半众数,就是主席树,按值域建树,不断判断左右子树子节点数量大于(r-l+1)/2,如果一直可以到叶子节点,则return true,否则return false 若题目是询问区间是否有过半众数且带修改,就是树套树(虽然我还没打过 阅读全文
posted @ 2019-07-25 12:06 yyys 阅读(258) 评论(0) 推荐(0)
摘要:模板题传送 就是简单的区间翻转操作,打标记就好。代码易懂 #include<bits/stdc++.h> #define INF 2100000001 #define N 100003 using namespace std; int read() { int x=0,f=1;char s=getc 阅读全文
posted @ 2019-07-24 19:49 yyys 阅读(202) 评论(0) 推荐(0)
摘要:传送门 其实这道题思路还是满简单的,只是代码量和debug让人感到痛苦,但还是蛮锻炼能力的 还是说说各个操作 插入 不同普通题的是,插入是插入一段。如果一个一个插的话会很慢,我们可以先把要插入的一段建成一个平衡树,再一起插入。 删除 删除也是删除一段区间[L,R],我们可以把L-1旋转到根,R+1旋 阅读全文
posted @ 2019-07-24 19:38 yyys 阅读(372) 评论(0) 推荐(0)
摘要:先说说启发式合并。 启发式合并可以看做是暴力的优化,一共n个元素,如果我们朴素的一个接一个合并,合并一次时间是O(n),要合并n次,时间是O(n^2) 但如果我们每次合并的时候,选择小的合并进大的,则最多合并logn次,时间是O(nlogn) 线段树合并 一般是合并值域线段树 初始有n个只有一个叶子 阅读全文
posted @ 2019-07-23 21:14 yyys 阅读(215) 评论(0) 推荐(0)
摘要:传送门 哇!这道题花了我一下午加一晚上,主要还是因为没有理解的很透彻就开始敲代码的缘故吧!现在要清清楚楚地分析一遍。 题意的重点还是要说一下,第i次插入i,但插入的位置不一定是按顺序的,题给的就是每个数插入的位置,求的是每插入一个数就回答当前最长上升子序列长度 比如样例: 3 0 0 2 就是一个 阅读全文
posted @ 2019-07-11 22:01 yyys 阅读(272) 评论(0) 推荐(0)
摘要:splay 其实离听splay也不过一个月的时间,但今天复习的时候真的是忘的一干二净。复习其实是预习后来总结一下(明白要经常复习的重要性)。 参考https://baijiahao.baidu.com/s?id=1613228134219334653&wfr=spider&for=pc splay维 阅读全文
posted @ 2019-07-08 21:22 yyys 阅读(171) 评论(0) 推荐(0)
摘要:马上要进入暑假的训练了,所以复习了一下线段树的模板,感觉同最开始的理解又加深了一些,所以还是写博客总结一下,方便日后复习。 洛谷3373是一道线段树区间加乘模板(裸),今天就又敲了一遍,有几个地方是我自己觉得很重要的。 1.考虑是否要开Long Long。 2.乘的标记一开始赋为1,在标记下传后也要 阅读全文
posted @ 2019-07-06 16:45 yyys 阅读(420) 评论(0) 推荐(0)
摘要:大概意思呢,就是求循环序列的逆序对 题解中有这样的一个思考过程 1.1 30%O(n3) 暴力:枚举每个循环状态,再暴力计算逆序对数。 #include <cstdio> #include <iostream> using namespace std; const int N = 1000000 + 阅读全文
posted @ 2019-03-19 22:02 yyys 阅读(342) 评论(1) 推荐(0)