
暑假专题
风声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 · 212 阅读 · 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 · 172 阅读 · 0 评论 -
暑假前专题题解---图论---A
对于这个题,我们建立反向边即可,然后从k开始bfs,第一个入队的,出度为0的点,到这个点的距离就是我们要的答案。注意原点的权重初始值是1 ,自己本身也是一门要选的课。代码如下#include <bits/stdc++.h>using namespace std;typedef pair<int, int> pi;const int...原创 2018-08-07 19:36:37 · 221 阅读 · 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 · 256 阅读 · 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 · 179 阅读 · 0 评论 -
暑期前专题题解---数据结构---L
并查集的应用,可以发现,因为颜色有无数多种,我们根本不可能通过关系推导得到x和y之间的颜色关系,因此我们不能将有关系的两个节点连接在一起,我们应该将所有相同颜色的点连接在一起,那么现在的难度就在于判断两个点的颜色是相同还是我们不知道,因为这两种情况,x和y都不在同一个并查集上,因此,我们用1e5个set来记录,例如s[x] 记录的就是和x有关系的点。那么就我们发现如果x和y...原创 2018-08-06 21:21:11 · 148 阅读 · 0 评论 -
暑期前专题题解---数据结构---K
典型的并查集的运用,和这题类似的有一个三角关系的题目,思路类似,但是实现起来稍微难一点,这个题目的关键就是只有两种颜色,这个就给我们计算关系带来了很大的便利,设re[x] 表示x和它父亲节点的关系,那么x和他爷爷节点的关系就是 ( re[x] + re[pre[x]] ) % 2; 这个关系不分方向,博客里面又个同数据结构专题的J题,难度相对这个就大一点。那么只要有关...原创 2018-08-06 20:13:30 · 160 阅读 · 0 评论 -
暑期前专题题解---数据结构---J
并查集的一个好题目,因为石头剪刀布的三角关系,我们可以用0表示两个同类,1表示被它的父亲克制,2表示克制它的父亲,那么一个节点和爷爷节点的关系就变成了,(re[x] + re[pre[x] ]) % 3 ,因为并查集带压缩路径,所以最后join时,最多存在一个四边形的关系,讨论x和y的根节点是否相同即可。代码如下#include <bits/stdc++.h&...原创 2018-08-04 18:20:26 · 186 阅读 · 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 · 187 阅读 · 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 · 180 阅读 · 0 评论 -
暑假前专题题解---图论---B
样例应该是错了,这题大概是寻找最小生成树是不是唯一的,也就是找次小生成树,对于一颗最小生成树,判断是否唯一的情况就是枚举最小生成树上的两个点,因为是树,两点链接一之后,一定是一个环,对于这个环,我们处理出这个环上最大的一条边,删去这个环上最大的一条边,得到的也是一棵树,因为删去的是最大的一条边(这条边不能再最小生成树以内。),所以留下的树,如果这颗树的权值和等于最小生成树,那...原创 2018-08-07 21:59:47 · 1061 阅读 · 0 评论