
数据结构
分类专栏简介不能为空
tcy今天长胖了吗
总有一天我也会是金牌女孩ヾ(≧▽≦*)o
展开
-
G. Rikka with Intersections of Paths(2018-2019ICPC徐州)【树链剖分+线段树】
G. Rikka with Intersections of Paths(2018-2019ICPC徐州)【树链剖分+线段树】题意给定一棵 nnn 个点的树和 mmm 个树上的简单路径的端点点对,求从 mmm 条路里选 kkk 条,满足这 kkk 条路有至少一个点是公共点的方案数。思路歪掉的思路模拟赛的时候想着想着就以为是 kkk 条路连通了,于是写了个单点修改、区间查询的树链剖分,然后对路径排序,按照 lca(u,v)lca(u, v)lca(u,v) 的深度从深往浅处理,每次先统计这条路径上原创 2021-09-22 19:39:22 · 452 阅读 · 0 评论 -
D. Lowbit(The 15th Chinese Northeast Collegiate Programming Contest)【线段树】【区间】
D. Lowbit(The 15th Chinese Northeast Collegiate Programming Contest)【线段树】【区间】传送门#include <bits/stdc++.h>using namespace std;typedef long long ll;const int N = 1e5 + 10;const int mod = 998244353;ll lowbit(ll x){ return x & (-x);}原创 2021-08-27 22:50:59 · 257 阅读 · 0 评论 -
P6136 【模板】普通平衡树(数据加强版)——Treap解法
P6136 【模板】普通平衡树(数据加强版)wa了一下午,最后发现是INF设小了……需要注意的点:可能会查询一个不存在的数的rank数据范围 2302^{30}230,如果一般习惯用 0x3f3f3f3f 赋值的同学需要注意,230=1073741824,0x3f3f3f=10611095672^{30} = 1073741824 ,0x3f3f3f = 1061109567230=1073741824,0x3f3f3f=1061109567。(我在这WA了一下午)#include <b原创 2021-08-26 17:20:36 · 219 阅读 · 0 评论 -
Tree Xor(2021牛客暑期多校训练营4)【线段树】
Tree Xor(2021牛客暑期多校训练营4)【线段树】传送门题意给定一颗树,每个点的权值 aia_iai 在 [li,ri][l_i, r_i][li,ri] 之间,已知每条边 u,vu, vu,v 的边权 wu,v=au xor avw_{u, v} = a_u \ xor \ a_vwu,v=au xor av ,思路参考:2021牛客多校4_bok_choy_的博客 队友的博客队友写的好好,我摸了()具体实现见代码注释代码#in原创 2021-08-21 10:38:01 · 194 阅读 · 0 评论 -
E-Eyjafjalla(2021牛客暑期多校训练营9)【主席树】
E-Eyjafjalla(2021牛客暑期多校训练营9)【主席树】传送门思路以点1为根,可以发现这棵树有这样的性质:深度越深,温度越低。所以我们从当前点往根节点走,一直走到父亲节点的温度不在 [l,r][l, r][l,r] 区间内时停下,此时所在的节点就是病毒能够扩散到的深度最低的节点(这一步可以用倍增来做)。以这个节点为根节点的子树包含了所有被感染的节点,也就是说这颗子树外的节点不可能被感染。被感染的条件是温度在区间 [l,r][l, r][l,r] 之间,所以此时问题就转化为了找出这颗子树原创 2021-08-15 16:39:12 · 292 阅读 · 0 评论 -
P3833 [SHOI2012]魔法树(洛谷)【树链剖分+线段树模板】
P3833 [SHOI2012]魔法树(洛谷)【树链剖分+线段树模板】思路纯板子题,没有思维含量。但是不知道为什么数组要开2e5,非常迷惑。代码#include <bits/stdc++.h>using namespace std;typedef long long ll;const int N = 2e5 + 10;struct line_tree{ struct node { int l, r; ll add, sum;原创 2021-08-11 18:01:29 · 325 阅读 · 0 评论 -
F-xay loves trees(2021牛客暑期多校训练营7)【双指针+树链剖分+线段树维护最大值】
F-xay loves trees(2021牛客暑期多校训练营7)题意给定两个树,找一个最大的子图,使得在第一棵树中任意两个节点互为祖先-子孙关系,在第二棵树中任意两个节点互不为祖先-子孙节点关系。思路参考:2021牛客暑期多校训练营7 F - xay loves trees - naymi - 博客园 (cnblogs.com)显然这些点在第一棵树上必然是一条链,所以我们用双指针维护这棵树上的一条链;对于这条链,判断其在第二棵树上是否满足条件的方法是:对于链上的每个节点,将其在第二棵树上以该点为原创 2021-08-10 14:16:58 · 405 阅读 · 0 评论 -
P3178 [HAOI2015]树上操作(洛谷)【树链剖分+线段树模板】
P3178 [HAOI2015]树上操作(洛谷)【树链剖分+线段树模板】思路这题是一个树链剖分模板题,本来是参照秦淮岸灯火阑珊的博客树链剖分(轻重链剖分)算法笔记自己写一遍树链剖分并作为以后的板子,结果非常不幸纠结了一整天才搞完。原博客的代码有点乱,我一直以为自己错是因为有细节错误,结果找了很久发现原博客的代码有 #define int long long ……于是把所有的int全部换long long就过了……代码#include <bits/stdc++.h>#define pb原创 2021-08-09 20:28:37 · 300 阅读 · 0 评论 -
H-Hopping Rabbit(2021牛客暑期多校训练营6)【扫描线】
H-Hopping Rabbit思路其实从 (x,y)(x, y)(x,y) 点出发和从 (x+d,y+d)(x + d, y + d)(x+d,y+d) 出发是一样的,因为左右都只能跳 ddd 的距离,那么有区别的出发点其实都可以归纳到 x∈[0,d),y∈[0,d)x \in [0, d), y \in [0, d)x∈[0,d),y∈[0,d) 的范围内。我们把所有的陷阱都通过这种方法映射到 x∈[0,d),y∈[0,d)x \in [0, d), y \in [0, d)x∈[0,d),y∈[0原创 2021-08-06 20:07:35 · 211 阅读 · 3 评论 -
L3-003 社交集群 (30 分)
L3-003 社交集群 (30 分)题目题目链接思路开始想复杂了,以为用并查集可能做不了,后来发现其实就是并查集。至于部分爱好相同如何连接,我采用的方法是输入一个爱好之后去判断这个爱好的表当前是否为空,不为空就和表里的第一个人相连,并且无论是否是空的都放入表中。最后取出每个人的祖先放入set同时统计人数即可。代码#include <bits/stdc++.h>#define INF 0x3f3f3f3f3f3f#define pb push_backusing namespac原创 2021-04-23 20:06:32 · 147 阅读 · 0 评论 -
L2-024 部落 (25 分)
L2-024 部落 (25 分)题目在一个社区里,每个人都有自己的小圈子,还可能同时属于很多不同的朋友圈。我们认为朋友的朋友都算在一个部落里,于是要请你统计一下,在一个给定社区中,到底有多少个互不相交的部落?并且检查任意两个人是否属于同一个部落。输入格式:输入在第一行给出一个正整数N(≤104),是已知小圈子的个数。随后N行,每行按下列格式给出一个小圈子里的人:K P[1] P[2] ⋯ P[K]其中K是小圈子里的人数,P[i](i=1,⋯,K)是小圈子里每个人的编号。这里所有人的编号从1开始连原创 2021-03-16 21:30:35 · 295 阅读 · 0 评论 -
L2-012 关于堆的判断 (25 分)
L2-012 关于堆的判断 (25 分)题目将一系列给定数字顺序插入一个初始为空的小顶堆H[]。随后判断一系列相关命题是否为真。命题分下列几种:x is the root:x是根结点;x and y are siblings:x和y是兄弟结点;x is the parent of y:x是y的父结点;x is a child of y:x是y的一个子结点。输入格式:每组测试第1行包含2个正整数N(≤ 1000)和M(≤ 20),分别是插入元素的个数、以及需要判断的命题数。下一行给出区间[原创 2021-03-01 22:13:33 · 297 阅读 · 0 评论 -
C - Peaceful Rooks (Codeforces Round #692 (Div. 2, based on Technocup 2021 Elimination Round 3)
C - Peaceful Rooks (Codeforces Round #692 (Div. 2, based on Technocup 2021 Elimination Round 3)题意给定 n×nn \times nn×n 的棋盘,放入 mmm 个车,保证 1≤m<n1 \leq m \lt n1≤m<n 且没有任何的车在同一行或同一列。现在要你把所有车移动到 (i,i)(i, i)(i,i) 位置 (i≤1≤n)(i \leq 1 \leq n)(i≤1≤n) ,每次移动可以在横原创 2021-02-20 21:12:13 · 1248 阅读 · 0 评论