数据结构
风声sp
这个人很懒,还没想到说点啥
展开
-
暑假前专题题解---数据结构---F
题目转送门:http://qscoj.cn/#/problem/show/1921 因为A很大,所以需要先离散化,然后建树,对于每个A - len 的位置二分查找位置,用线段树询问区间和最大最小值即可代码如下#include <bits/stdc++.h>using namespace std;const int maxn = 1e5 + 10;str...原创 2018-08-03 17:38:30 · 201 阅读 · 0 评论 -
P3373 【模板】线段树 2
线段树同时实现区间加法和乘法,因为加法乘法都涉及到了动态修改,因此我们需要两个lazy标记,我们记为add,mul,但是在pushdown的时候就会出现一个问题,乘法对之前做过的加法标记是有影响的,如果先下推加法标记,那么就忽略乘法对结果的影响,导致错误的答案 当我们需要将标记下推的时候,正确的操作应该是将当前区间的add也乘上mul,下推保证结果正确,而在添加mul标记的时候之...原创 2019-03-04 16:21:31 · 316 阅读 · 0 评论 -
P1198 [JSOI2008]最大数
简单的线段树模拟,首先统计最终有多少数,建好线段树之后,相当于做修改查询操作,注意到查询操作查询的区间为(len - L + 1, len) len 为当前数列的长度代码如下:#include <bits/stdc++.h>using namespace std;typedef long long LL;const int maxn = 1e6 + 10;str...原创 2019-03-03 15:30:19 · 150 阅读 · 0 评论 -
暑假前专题题解---数据结构---E
简单的模拟,用stl即可,pair在第一个值相等情况下会对第二个排序,自己写struct ,重载运算符也可;#include <bits/stdc++.h>using namespace std;map<string, int> mp;set<pair<int, string> > s;int main(){ int n...原创 2018-08-03 10:26:29 · 164 阅读 · 0 评论 -
暑假前专题题解---数据结构---B
线段树的基本区间操作#include<bits/stdc++.h>using namespace std;typedef long long LL;const int maxn = 1e6 + 10;LL sum[maxn<<2],p[maxn<<2];LL sum1;void up(int id){ sum[id] ...原创 2018-08-03 09:56:36 · 243 阅读 · 0 评论 -
暑假前专题题解---数据结构---A
简单的线段树操作#include<bits/stdc++.h>using namespace std;typedef long long LL;const int maxn = 1e6 + 10;LL sum[maxn<<2],maxx[maxn<<2],minn[maxn<<2];LL sum1,max1 = -...原创 2018-08-03 09:53:39 · 174 阅读 · 0 评论 -
暑期前专题题解---数据结构---L
并查集的应用,可以发现,因为颜色有无数多种,我们根本不可能通过关系推导得到x和y之间的颜色关系,因此我们不能将有关系的两个节点连接在一起,我们应该将所有相同颜色的点连接在一起,那么现在的难度就在于判断两个点的颜色是相同还是我们不知道,因为这两种情况,x和y都不在同一个并查集上,因此,我们用1e5个set来记录,例如s[x] 记录的就是和x有关系的点。那么就我们发现如果x和y...原创 2018-08-06 21:21:11 · 143 阅读 · 0 评论 -
暑期前专题题解---数据结构---K
典型的并查集的运用,和这题类似的有一个三角关系的题目,思路类似,但是实现起来稍微难一点,这个题目的关键就是只有两种颜色,这个就给我们计算关系带来了很大的便利,设re[x] 表示x和它父亲节点的关系,那么x和他爷爷节点的关系就是 ( re[x] + re[pre[x]] ) % 2; 这个关系不分方向,博客里面又个同数据结构专题的J题,难度相对这个就大一点。那么只要有关...原创 2018-08-06 20:13:30 · 154 阅读 · 0 评论 -
暑期前专题题解---数据结构---J
并查集的一个好题目,因为石头剪刀布的三角关系,我们可以用0表示两个同类,1表示被它的父亲克制,2表示克制它的父亲,那么一个节点和爷爷节点的关系就变成了,(re[x] + re[pre[x] ]) % 3 ,因为并查集带压缩路径,所以最后join时,最多存在一个四边形的关系,讨论x和y的根节点是否相同即可。代码如下#include <bits/stdc++.h&...原创 2018-08-04 18:20:26 · 177 阅读 · 0 评论 -
暑假前专题题解---数据结构---I
简单的并查集的应用,使用一个sum数组记录当前的编号的物品有多少和他相同的,这个数组有用的部分只是并查集的最高的节点的sum值,没次通过当前的数找到它的祖先即可,合并的时候sum相加。代码如下 #include <bits/stdc++.h>using namespace std;const int maxn = 1e5 + 10;int pre[ma...原创 2018-08-03 18:26:58 · 172 阅读 · 0 评论 -
暑假前专题题解---数据结构---G
数据结构队列的简单运用,每个元素放进队列,查询的时候,判断当前队首的元素是否合法(有没有下载完成即可),不合法弹出,知道为空或者有合法元素。代码如下#include <bits/stdc++.h>using namespace std;struct node{ int t,a,b; };queue<node> q;int main(){ ...原创 2018-08-03 18:02:10 · 166 阅读 · 0 评论 -
P2023 [AHOI2009]维护序列
线段树同时维护加法乘法的模版题详情见传送门https://blog.csdn.net/CCCCTong/article/details/88122065原创 2019-03-04 16:30:37 · 234 阅读 · 0 评论