数据结构
吴俊达9812
这个作者很懒,什么都没留下…
展开
-
洛谷 P1972 HH的项链
题意:查询某一区间颜色数 思路:对于固定区间来说,颜色数只与各种颜色第一次出现的位置有关。该位置置1,该颜色其余位置置0. 维护方法:离线,对查询按左端点排序。 查询下一个颜色的位置需要用到跳跃表next数组 #include <bits/stdc++.h> using namespace std; typedef long long LL; typedef...原创 2019-04-28 10:54:41 · 148 阅读 · 0 评论 -
洛谷 P2161 会场预约
题意:删除与当前区间有交点的区间,并插入此区间 思路:注意到当前维护的区间不能有交点,区间具有很好的排序性质,可以二分查找。 注意问题:读入字符时应采用scanf( ' %s') 的方式,用getchar读走回车可能会出现问题。 // luogu-judger-enable-o2 #include <bits/stdc++.h> using namespace std; typ...原创 2019-04-28 11:01:27 · 184 阅读 · 0 评论 -
洛谷 P2023 维护序列
思路:线段树,懒惰标记下传需注意 #include <bits/stdc++.h> using namespace std; typedef long long LL; const LL maxn = 100000 + 100; LL n,a[maxn],p; struct segment_tree{ LL l,r,laz1,laz2,sum; segment_tr...原创 2019-04-28 11:04:53 · 231 阅读 · 0 评论 -
POJ 2796 单调栈
找以某个数为最小值的区间 #include <iostream> #include<cstdio> using namespace std; typedef long long LL; typedef pair< LL,LL > pii; const LL maxn = 100000 + 100; pii st[maxn]; LL top,n,a[maxn]...原创 2019-04-23 19:47:11 · 136 阅读 · 0 评论 -
2019浙江省赛 A-Vertices in the Pocket
题意:无向图 修改加查询 修改:在无向图中加边( 保证简单图:无重边和自环 ) 查询:加x条边(保证加完还是简单图),最多和最少的连通分量 思路: 首先思路很好想,连通块尽量少就是连一条边减少一个连通分量。连通块尽量多就是在原有的连通分量中进行加边。 加满了就需要在两个连通块之间进行连边,我们当然希望在两个大的连...原创 2019-05-09 20:36:28 · 172 阅读 · 0 评论 -
ACM周赛联盟第二场——塔防游戏
题意:每个塔有保护范围和防御力,一个点的防御力为所有能覆盖这一点的塔的防御力的加和,可以增加k点防御力,问如何分配这些防御力使得所有点最小的防御力最大。 思路:最小值最大,明显时二分加贪心。 收获:维护了两个值,第一个是每个点可到达的最远点,这个最开始想用线段树来进行区间修改维护,但后来发现用优先队列扫一遍就解决了。第二个时每个点当前的防御值累加和,一开始想用线段树来进行区间修改,后来发现用差...原创 2019-05-17 22:17:32 · 191 阅读 · 0 评论 -
【BZOJ 1251】序列终结者 splay模板
模板:区间反转,区间加某一个值,区间求最大值 坑点:首尾各加上两个节点后,注意第一个新加点的初值。 这个东西应该叫名次树吧,写完这个东西最大的体会就是,树上每个节点的标号其实就是人们思维上那个点应该出现的value的索引值,怎么标并不重要。 #include<bits/stdc++.h> typedef long long LL; typedef int lint; using...原创 2019-05-27 22:40:58 · 157 阅读 · 0 评论 -
牛客 Energy stones
这题不太好想,主要的难点在于 我们平时的习惯是按照时间的先后顺序去统计答案,这道题 是通过枚举每一个点的 来进行统计的, 并通过差分方法 + set 维护出每一个位置在所有的时间段的状态。 #include <bits/stdc++.h> using namespace std; typedef long long lint; const int maxn = 100005; co...原创 2019-08-22 14:42:25 · 139 阅读 · 0 评论