数据结构
文章平均质量分 75
数据结构
YB Lin
这个作者很懒,什么都没留下…
展开
-
F - Snuke‘s Coloring 2 矩形周长 + 栈
传送门题意:目前有一个左下角(0,0)(0,0)(0,0)右上角(W,H)(W,H)(W,H)的矩形,起初矩形内部都是白色的。现在给你nnn个点,每次在以下操作中选择一种:将矩形x<xix<x_ix<xi的区域染黑将矩形x>xix>x_ix>xi的区域染黑将矩形y<yiy<y_iy<yi的区域染黑将矩形y>yiy>y_iy>yi的区域染黑现在需要最大化操作后的白色矩阵的周长。1≤W,H≤1e8,1≤n≤3e原创 2022-03-29 09:21:39 · 284 阅读 · 0 评论 -
The 2021 ICPC Asia Taipei Regional F. What a Colorful Wall 扫描线 + 并查集
文章目录题意:思路传送门题意:给你平面nnn个矩形,每个矩形有一种颜色,依次给出矩形以及其的颜色,后面的矩形会覆盖前面的矩形,问最终有多少种颜色。1≤n≤4000,0≤x1<x2<228,0≤y1<y2<228,1≤c≤n1\le n\le 4000,0\le x_1<x_2< 2^{28},0\le y_1<y_2< 2^{28},1\le c\le n1≤n≤4000,0≤x1<x2<228,0≤y1<y2<228,原创 2022-03-23 21:46:51 · 1199 阅读 · 0 评论 -
2018-2019 ACM-ICPC, Asia Shenyang Regional Contest E. The Kouga Ninja Scrolls 切比雪夫距离 +线段树
传送门将曼哈顿距离转换成切比雪夫距离,现在就是求max(∣x1−x2∣,∣y1−y2∣)max(|x_1-x_2|,|y_1-y_2|)max(∣x1−x2∣,∣y1−y2∣),显然我们可以将x,yx,yx,y分开考虑,下面以xxx为例。考虑一段区间内不同门派的最大值和最小值,我们可以维护这个区间的最大值和最小值,以及与最大值门派不同的次大值和与最小值门派不同的次小值,这样就不难得出答案了。#include<bits/stdc++.h>#define X first#defi.原创 2022-03-20 21:19:36 · 141 阅读 · 0 评论 -
P2906 [USACO08OPEN]Cow Neighborhoods G 切比雪夫距离 + 并查集 + set
传送门考虑将曼哈顿距离转换成切比雪夫距离,这样问题就变成了max(∣x1−x2∣,∣y1−y2∣)≤dmax(|x_1-x_2|,|y_1-y_2|)\le dmax(∣x1−x2∣,∣y1−y2∣)≤d,这个式子就很好看了,我们首先按照(x,y)(x,y)(x,y)排序,让后我们双指针控制∣xr−xl∣<=d|x_r-x_l|<=d∣xr−xl∣<=d,用multisetmultisetmultiset维护[l,r][l,r][l,r]内的yyy坐标,一开始比较暴力的想法原创 2022-03-18 10:12:14 · 200 阅读 · 0 评论 -
CF 1642 E. Anonymity Is Important 线段树 + 离线
文章目录题意思路传送门题意有nnn个人,给你qqq个请求,分以下三种:[l,r,x][l,r,x][l,r,x] 如果x=0x=0x=0,代表[l,r][l,r][l,r]这个区间内的人都没病。[l,r,x][l,r,x][l,r,x] 如果x=1x=1x=1,代表[l,r][l,r][l,r]这个区间内的人至少一个有病。jjj 查询第jjj个人是否能确定有病或者没病,如果能确定那么是有病还是没病。1≤n,q≤2e51\le n,q\le 2e51≤n,q≤2e5思路一个人没病很好确定原创 2022-02-26 10:55:34 · 383 阅读 · 0 评论 -
CF372 C. Watching Fireworks is Fun 单调队列优化dp
文章目录题意思路传送门题意城镇中有nnn个位置,有mmm个烟花要放,第iii个烟花放出的时间记为tit_iti,放出的位置记为aia_iai。如果烟花放出的时候你在位置xxx,那么将收获bi−∣ai−x∣b_i-|a_i-x|bi−∣ai−x∣点的快乐值。初始可以在任意位置,每个单位时间可以移动不大于ddd个单位距离,现在需要最大化你能获得的快乐值。1≤n≤150000,1≤m≤300,1≤d≤n1\le n\le 150000,1\le m\le 300,1\le d\le n1≤n≤1原创 2022-02-22 19:57:39 · 128 阅读 · 0 评论 -
CF 1638 E. Colorful Operations set 区间平推
文章目录题意:思路:传送门题意:给你一个数组aaa,初始价值全为000,颜色全为111,让后让你实现以下三个操作:将[l,r][l,r][l,r]区间内的颜色都染成ccc。将所有颜色为ccc的位置价值都加上xxx。询问iii位置的价值。1≤n,q≤1e61\le n,q\le 1e61≤n,q≤1e6思路:首先分析一下第二个操作是全局的,这就提示我们每次执行第二个操作的时候可以打一个懒标记lazy[c]+=xlazy[c]+=xlazy[c]+=x,当询问某个点的价值的时候只需要输出a原创 2022-02-19 16:12:55 · 438 阅读 · 0 评论 -
P3085 [USACO13OPEN]Yin and Yang G 点分治
文章目录题意:思路:传送门题意:给你一颗nnn个点的树,每条边为黑色或者白色,问满足以下条件的路径条数:路径上存在一个不是端点的点,使得两端点到该点的两条路径上两种颜色的边数相等。1≤n≤1000001\le n\le 1000001≤n≤100000思路:统计树上路径问题显然需要用到点分治了,这个题维护的信息比较麻烦,想明白了思路还需要考虑如何做才能使代码变得简便好写。考虑点分治每个步骤需要算的贡献,在选出重心之后,之后的子树中就不会包含重心这个点,所以贡献需要算每颗包含重心的子树内的路径以原创 2022-02-19 14:41:20 · 2799 阅读 · 0 评论 -
2020EC-final
传送门文章目录B - Rectangle Flip 2题意:思路:A - Namomo Subsequence题意:思路:D - City Brain题意:思路:B - Rectangle Flip 2题意:给你一个n∗mn*mn∗m的矩阵,接下来n∗mn*mn∗m秒每秒都会消失一个格子,问每个时刻矩阵中构成的矩形有多少个。n,m≤500n,m\le 500n,m≤500思路:先说一下复杂度n4n^4n4但是跑不满的算法,对于每个删去的点,枚举左边以及右边每个位置,维护其能到的上下界,比如上界原创 2021-11-22 21:39:34 · 787 阅读 · 0 评论 -
Codeforces Round #507 (Div. 1) D. You Are Given a Tree 根号分治 + dp
传送门题意:有一颗nnn个节点的树,其中一个简单路径集合被称为kkk合法当且仅当:树的每个节点至多属于一条路径,且每条路径恰好包含kkk个点。对于k∈[1,n]k\in [1,n]k∈[1,n],求kkk合法路径集合最多路径个数,即设kkk合法路径集合为SSS,求最大的∣S∣|S|∣S∣。2≤n≤1e52\le n\le 1e52≤n≤1e5思路:考虑每次用dpdpdp来O(n)O(n)O(n)来求,记一个最大值和次大值,让后就是比较常规的dpdpdp了,这样的复杂度是O(n2)O(n^2)O原创 2021-10-11 23:17:15 · 143 阅读 · 0 评论 -
P3396 哈希冲突 根号分治
传送门文章目录题意:思路:题意:给你一个长度为nnn的数组aaa,每次操作有两种:(1)(1)(1) 给出x,yx,yx,y,问aaa中下表在模xxx的时候,模数等于yyy的位置aia_iai之和。(2)(2)(2) 给出x,yx,yx,y,代表令ax=ya_x=yax=y。思路:这个题的第一个询问就是从yyy下标开始,让后每次递增xxx,将经过的位置都算入答案,这样的复杂度显然不能接受。考虑每次递增的xxx,如果我们能保证x>nx>\sqrt nx>n,那么递增的次原创 2021-10-06 16:43:55 · 168 阅读 · 0 评论 -
Harbour.Space Scholarship Contest 2021-2022 F. Pairwise Modulo 逆向思维 + 树状数组
传送门文章目录题意思路:题意给定一个不同数组成的序列aaa,定义pkp_kpk为pk=∑i=1k∑j=1kai mod ajp_k=\sum_{i=1}^k\sum_{j=1}^ka_i\bmod a_jpk=∑i=1k∑j=1kaimodaj,让你对于每个i∈[1,n]i\in [1,n]i∈[1,n]求出pip_ipi。2≤n≤2e5,1≤ai≤3e52\le n\le 2e5,1\le a_i\le 3e52≤n≤2e5,1≤ai≤3e5思路:考虑每次新增了什么,不难发现从原创 2021-10-06 16:35:43 · 139 阅读 · 0 评论 -
P2408 不同子串个数 SAM
传送门文章目录题意:思路:题意:求sss中本质不同的字串个数。1≤∣s∣≤1e51\le |s|\le 1e51≤∣s∣≤1e5思路:显然,个数就是∑(len[i]−len[fa[i]])\sum (len[i]-len[fa[i]])∑(len[i]−len[fa[i]])。//#pragma GCC optimize("Ofast,no-stack-protector,unroll-loops,fast-math")//#pragma GCC target("sse,sse2,sse3,原创 2021-09-28 09:32:49 · 123 阅读 · 0 评论 -
P3804 【模板】后缀自动机 (SAM)
传送门文章目录题意:思路:题意:给你一个字符串sss,让你求sss中出现次数不为111的子串出现次数乘上该字串长度最大值。∣s∣≤1e6|s|\le 1e6∣s∣≤1e6思路:没学明白,不多bbbbbb,把树建出来跑一下就行了。//#pragma GCC optimize("Ofast,no-stack-protector,unroll-loops,fast-math")//#pragma GCC target("sse,sse2,sse3,ssse3,sse4.1,sse4.2,avx,a原创 2021-09-28 09:06:55 · 107 阅读 · 2 评论 -
Codeforces Round #538 (Div. 2) F. Please, another Queries on Array? 线段树 + 欧拉函数
传送门文章目录题意:思路:题意:给你一个序列aaa,你需要实现两种操作:(1)(1)(1) 将[l,r][l,r][l,r]的aia_iai都乘rrr。(2)(2)(2) 求ϕ(∏i=lrai) mod 1e9+7\phi(\prod_{i=l}^ra_i)\bmod 1e9+7ϕ(∏i=lrai)mod1e9+71≤n≤4e5,1≤1≤2e5,1≤ai,r≤3001\le n\le 4e5,1\le 1\le 2e5,1\le a_i,r\le 3001≤n≤4e5,1≤1≤2e5,1≤原创 2021-09-27 21:29:38 · 122 阅读 · 0 评论 -
1285. 单词 ac自动机 + fail树
传送门文章目录题意:思路:题意:一篇论文由若干单词构成,且单词间是隔开的,给你nnn个单词,要求你计算每个单词在论文中出现了多少次。1≤n≤2001\le n\le 2001≤n≤200,所有单词总长不超过1e61e61e6思路:考虑一种比较暴力的写法,我们将所有串仍acacac自动机里面,让后遍历每个单词,将其视为要匹配的串,每次都跑一遍,复杂度O(n1e6)O(n1e6)O(n1e6),还带常数,给了1s1s1s显然过不去。考虑每个单词在其他单词中出现的位置,都是一些前缀的后缀!所以我们可原创 2021-09-21 09:08:28 · 191 阅读 · 0 评论 -
P5357 【模板】AC自动机(二次加强版) fail树
传送门文章目录题意:思路:题意:思路:这个只能搞failfailfail树了,让后跑一遍即可。重复的字符串记一个,让后其他的都跟他一个答案即可。// Problem: P3796 【模板】AC自动机(加强版)// Contest: Luogu// URL: https://www.luogu.com.cn/problem/P3796// Memory Limit: 128 MB// Time Limit: 3000 ms// // Powered by CP Editor (ht原创 2021-09-20 11:35:22 · 124 阅读 · 0 评论 -
P3796 【模板】AC自动机(加强版)
传送门文章目录题意:思路:题意:给你nnn个模式串sss,以及一个文本串ttt,输出出现次数最多的模式串出现的次数和模式串本身。1≤n≤150,∣s∣≤70,∣t∣≤1e61\le n\le 150,|s|\le 70,|t|\le 1e61≤n≤150,∣s∣≤70,∣t∣≤1e6思路:将模式串仍acacac自动机里面,由于出现的模式串可重复,可以选择直接暴跳,复杂度是∣t∣∣s∣|t||s|∣t∣∣s∣,能通过本题。还可以建一颗failfailfail树,然后遍历文本串,给每个需要暴跳的起原创 2021-09-20 10:56:12 · 107 阅读 · 0 评论 -
AC Automaton
简单复习一下字符串,顺便存个板子。// Problem: P3808 【模板】AC自动机(简单版)// Contest: Luogu// URL: https://www.luogu.com.cn/problem/P3808// Memory Limit: 512 MB// Time Limit: 1000 ms// // Powered by CP Editor (https://cpeditor.org)//#pragma GCC optimize("Ofast,no-stack-pr原创 2021-09-20 08:31:41 · 104 阅读 · 0 评论 -
P6327 区间加区间sin和 线段树 + 数学
传送门文章目录题意:思路:题意:给你一个长度为nnn的序列aaa,有mmm次操作,每次操作分两种类型:(1)l,r,v(1)l,r,v(1)l,r,v,将al,al+1,...,ara_l,a_{l+1},...,a_ral,al+1,...,ar分别加上vvv。(2)l,r(2)l,r(2)l,r,询问∑i=lrsin(ai)\sum_{i=l}^r\sin(a_i)∑i=lrsin(ai) 。思路:闲的没事来水俩题。考虑高中的和差公式,sin(a+b)=sin(a)cos(b原创 2021-09-19 22:40:15 · 105 阅读 · 0 评论 -
CF1547F Array Stabilization (GCD version) st表 + 尺取/二分
传送门题意:思路:容易发现,我们将所有aaa都除上所有aaa的gcdgcdgcd,实际上就是让你求一个最小的lenlenlen,对于所有iii,gcd(ai,ai+1,...,ai+len−1)=1gcd(a_i,a_{i+1},...,a_{i+len-1})=1gcd(ai,ai+1,...,ai+len−1)=1,这个显然有单调性,所以打一个ststst表让后断环成链,二分lenlenlen每次检查一下即可。还可以尺取,固定右端点,找到最短的gcdgcdgcd为111的区间,取所有长度原创 2021-09-17 11:16:53 · 147 阅读 · 0 评论 -
Codeforces Round #740 (Div. 2) F. Top-Notch Insertions 线段树 / 平衡树 + 组合数学
传送门文章目录题意:思路:题意:思路:考虑最终的序列是什么鸭子的,首先序列肯定单调不降,也就是a1≤a2≤a3≤...≤ana_1\le a_2\le a_3\le ...\le a_na1≤a2≤a3≤...≤an,显然不可能都是$\le 号,因为如果插入的话是有可能产生号,因为如果插入的话是有可能产生号,因为如果插入的话是有可能产生<号的。假设我们现在有号的。假设我们现在有号的。假设我们现在有x个个个<$ 号,那么应该有(n+n−1−xn)\binom{n+n-1-x}{n}原创 2021-09-15 15:07:44 · 323 阅读 · 0 评论 -
Codeforces Round #285 (Div. 2) D. Misha and Permutations Summation 康托展开 + 线段树
传送门文章目录题意:思路:题意:思路:首先肯定不能模n!n!n!,所以考虑先将a,ba,ba,b做一个逆康托展开,得到a′,b′a',b'a′,b′数组,以及a′+b′=suma'+b'=suma′+b′=sum数组,让后我们可以通过这个数组每个位置乘上权(n−i)!(n-i)!(n−i)!得到他的字典序排名,也就是需要模n!n!n!的数,考虑从低位向前递推,也就是sum[i−1]+=sum[i] mod (n−i+1),sum[i]=sum[i] mod (n−i+1)sum[i-1]+=sum原创 2021-09-15 13:46:21 · 119 阅读 · 0 评论 -
UVA11525 Permutation 逆康托展开
传送门文章目录题意:思路:题意:思路:逆康托展开板子// Problem: UVA11525 Permutation// Contest: Luogu// URL: https://www.luogu.com.cn/problem/UVA11525// Memory Limit: 0 MB// Time Limit: 3000 ms// // Powered by CP Editor (https://cpeditor.org)//#pragma GCC optimize("Of原创 2021-09-14 22:24:25 · 143 阅读 · 0 评论 -
P5367 【模板】康托展开
传送门文章目录题意:思路:题意:思路:存个板子// Problem: P5367 【模板】康托展开// Contest: Luogu// URL: https://www.luogu.com.cn/problem/P5367// Memory Limit: 64 MB// Time Limit: 1200 ms// // Powered by CP Editor (https://cpeditor.org)//#pragma GCC optimize("Ofast,no-stac原创 2021-09-14 21:57:36 · 106 阅读 · 0 评论 -
Educational Codeforces Round 17 E. Radio stations cdq分治 + 树状数组
传送门文章目录题意思路:题意有nnn个电台,对于每个电台iii有三个参数xi,ri,fix_i,r_i,f_ixi,ri,fi,分别指他们的坐标、作用半径、频率。如果两个电台频率差值在kkk以内,并且他们的作用范围都能覆盖到彼此,那么称这两个电台互相干扰,问这nnn个站台中互相干扰的站台有多少对。$1\le n\le1e5,0\le k\le 10,1\le x_i,r_i\le 1e9,1\le f_i\le 1e4 $思路:首先将问题简化一下,题面无非就是求满足以下两个条件的对数:(原创 2021-09-11 20:59:22 · 103 阅读 · 0 评论 -
P4396 [AHOI2013]作业 cdq分治
传送门文章目录题意:思路:题意:给你一个长度为nnn的数列aaa,有qqq个询问,每次询问[l,r][l,r][l,r]中值域在[a,b][a,b][a,b]中的数出现的次数和在[a,b][a,b][a,b]中出现过的数值个数。n≤1e5,1≤a≤1e5n\le1e5,1\le a \le 1e5n≤1e5,1≤a≤1e5思路:这个题可以值域分块来写,经典模型了。这里介绍cdqcdqcdq的写法,考虑分的三维是那三维。比较容易想到前两维是l≤pos≤r,a≤val≤bl\le pos\le原创 2021-08-29 15:56:02 · 107 阅读 · 0 评论 -
NWERC 2018 A. Access Points 二维转一维 + 单调栈
传送门文章目录题意:思路:题意:给你平面上nnn个点,你需要对于1−n1-n1−n依次选择nnn个点作为每个点的终点,满足选择的点i<j,xi≤xj,yi≤yji<j,x_i\le x_j,y_i\le y_ji<j,xi≤xj,yi≤yj,最小化每个点的起点到终点的距离平方总和。n≤1e5,si,ti≤1e6n\le1e5,s_i,t_i\le1e6n≤1e5,si,ti≤1e6思路:考虑贡献的公式(xs−xt)2+(ys−yt)2(x_s-x_t)^2+(y_s原创 2021-08-24 20:13:03 · 167 阅读 · 0 评论 -
Codeforces Round #675 (Div. 2) F. Boring Queries 区间lcm + 主席树
传送门文章目录题意:思路:题意:给你一个长度为nnn的序列aaa,qqq个询问,每次询问[l,r][l,r][l,r]内的lcmlcmlcm是多少,对1e9+71e9+71e9+7取模。n≤1e5,a≤2e5,q≤1e5n\le1e5,a\le2e5,q\le1e5n≤1e5,a≤2e5,q≤1e5思路:关于lcmlcmlcm,对于两个数的lcmlcmlcm,为了防止爆炸我们通常写成a/gcd(a,b)∗ba/gcd(a,b)*ba/gcd(a,b)∗b,如果求1−n1-n1−n所有数的lcml原创 2021-08-24 11:20:05 · 203 阅读 · 0 评论 -
XXI Open Cup. Grand Prix of Korea I. Query On A Tree 17 树剖 + 二分 + 树带权重心
传送门文章目录题意:思路:题意:给你一棵树,每棵树初始权值都为000,现在给你两个操作:(1)(1)(1)将uuu的子树权值全部加111。(2)(2)(2)将(u,v)(u,v)(u,v)路径上的点权值都加111。每次输出一个点xxx,满足∑y=1Na[y]∗dis(x,y)\sum_{y=1}^Na[y]*dis(x,y)∑y=1Na[y]∗dis(x,y)最小,如果多个点相同,输出深度最小的点。思路:观察这个式子,发现就是一个带权重心的问题,如果不在重心显然向重心走更优,需要支持修改。原创 2021-08-23 19:49:56 · 635 阅读 · 0 评论 -
Educational Codeforces Round 32 G. Xor-MST 01tire + 分治 + Boruvka
传送门文章目录题意:思路:题意:给你一个长度为nnn序列aaa,每两个点之间的边权为ai⊕aja_i\oplus a_jai⊕aj,问你最小生成树的权值是多少。n≤2e5,ai<230n\le2e5,a_i< 2^{30}n≤2e5,ai<230思路:看到最小生成树,我们可以想到克鲁斯卡尔算法,但是完全图显然不能直接做,但是异或的话显然我们需要放到tiretiretire树上来跑的。这里先介绍一种基于tiretiretire树分治的算法。根据克鲁斯卡尔的思想,我们需要原创 2021-08-23 16:13:42 · 230 阅读 · 0 评论 -
2016-2017 Central Europe Regional Contest Hangar Hurdles 克鲁斯卡尔重构树 + 建图
传送门文章目录题意:思路:题意:有一个n∗nn*nn∗n的网格图,有若干位置有障碍,有qqq个询问,每次询问给出两个点坐标x1,y1,x2,y2x1,y1,x2,y2x1,y1,x2,y2,询问把一个正方形箱子从x1,x2x1,x2x1,x2推到y1,y2y1,y2y1,y2的时候,箱子最大能是多大。n≤1e3,q≤3e5n\le1e3,q\le3e5n≤1e3,q≤3e5思路:首先我们可以预处理出来每个点能放的最大的正方形边长是多少,即为数组aaa,这个可以通过二分+前缀和或者多源bfsbfs原创 2021-08-22 20:01:48 · 173 阅读 · 0 评论 -
HDU - 7084 Pty loves string kmp + fail树 + 主席树
传送门文章目录题意:思路:题意:给你一个字符串sss,有qqq个询问,每次给x,yx,yx,y代表取sss的前xxx个字符和后yyy个字符拼接起来得到ttt,输出ttt在sss中出现的次数。n,q≤2e5n,q\le2e5n,q≤2e5思路:考虑每个询问拼出来的串在sss中出现的位置,假设是[l,r][l,r][l,r],那么对于[1,x],[l,l+x−1][1,x],[l,l+x-1][1,x],[l,l+x−1]这两段区间一定是相等的,这也提示我们可以先预处理kmpkmpkmp数组nene原创 2021-08-19 21:02:54 · 241 阅读 · 0 评论 -
HDU - 7072 Boring data structure problem 双端队列 + 思维
传送门文章目录题意:思路:题意:你需要实现如下四个操作q≤1e7q\le1e7q≤1e7思路:做的时候想了个链表的思路让队友写了,懒。看了题解感觉题解还是很妙的。你需要快速插入一个数在前后两端,还需要支持删除一个数和查询中间位置的数标号。链表的思路比较明显,直接维护中点的位置,让后每次删除的时候将这个点的链表指向下一个点即可。就是写起来貌似不是很好写。题解是维护了两个双端队列,一个代表左边,一个代表右边,输出答案的话就是右边的第一个位置。考虑两种情况:(1)lsize>rsiz原创 2021-08-17 21:14:36 · 163 阅读 · 0 评论 -
#6284. 数列分块 8 分块
传送门文章目录题意:思路:题意:思路:乍一看貌似没有什么东西能维护块内同一个数的个数,但是通过第六感可以发现每次操作后区间都会被推成一个数,那么我们分个块,让后块内打个标记,是否就能过了呢?这个是可以的。如果初始值全部相同,那么查询的复杂度是n\sqrt nn的,每次修改最多破坏两头的两个块,所以均摊的复杂度是n\sqrt nn,即如果想让一个操作复杂度达到O(n)O(n)O(n),那么需要操作O(n)O(\sqrt n)O(n)次。所以直接分块暴力即可,注意判断块内的时候需要判断一下原创 2021-08-12 10:21:26 · 109 阅读 · 0 评论 -
#6278. 数列分块 2 分块 + 块内二分
传送门文章目录题意:思路:题意:思路:真 调一晚上血压上来了。考虑第一个操作,块内打个标记,其他的暴力查询即可。考虑第二个操作,讲块内元素排序之后,直接二分查询。注意修改元素值的时候需要重新排序,并且在查询开始前需要先将块排序。。以及各种小细节。// Problem: #6278. 数列分块入门 2// Contest: LibreOJ// URL: https://loj.ac/p/6278// Memory Limit: 256 MB// Time Limit: 500 ms原创 2021-08-11 21:16:56 · 100 阅读 · 0 评论 -
2021牛客暑期多校训练营6 Hopping Rabbit 扫描线 + 矩形 + 细节
传送门文章目录题意:思路:题意:给你nnn个矩形,以及一个距离ddd,让你找一个点(x+0.5,y+0.5)(x+0.5,y+0.5)(x+0.5,y+0.5),这个点一次能向四个方向跳ddd的距离,这个点不管怎么跳都跳不到矩形内。输出(x,y)(x,y)(x,y)。n,d≤1e5,−1e9≤x,y≤1e9n,d\le1e5,-1e9\le x,y\le1e9n,d≤1e5,−1e9≤x,y≤1e9思路:看了半天样例看懂了题,让后改对了。将所有矩形移动到[0,d][0,d][0,d]内,这个可原创 2021-08-11 19:49:45 · 122 阅读 · 0 评论 -
SP1043 GSS1 - Can you answer these queries I 猫树
传送门文章目录题意:思路:题意:思路:猫树是一种可以O(nlogn)O(nlogn)O(nlogn)预处理,O(1)O(1)O(1)查询的数据结构。预处理的信息应该满足可合并的性质,与线段树pushuppushuppushup的原理相同,道理上线段树能维护的猫树应该都能维护。猫树需要将原序列补满为222的幂次,维护信息的时候只需要buildbuildbuild一下,维护出来[l,mid],[mid+1,r][l,mid],[mid+1,r][l,mid],[mid+1,r]的信息,让后查询[l,原创 2021-08-11 15:19:08 · 97 阅读 · 0 评论 -
Codeforces Round #737 (Div. 2) D. Ezzat and Grid 线段树动态开点
传送门文章目录题意:思路:题意:思路:比较套路的一个题,我们维护一个dp[i]dp[i]dp[i]表示到了第iii行能保留的区间最多是多少。转移比较明显:dp[i]=max(dp[j])dp[i]=max(dp[j])dp[i]=max(dp[j])其中jjj能转移到iii当且仅当他们之间有交集。考虑到有1e91e91e9的范围,用线段树来判断的话可以动态开点也可离散化,这里写了个动态开点给卡过去了。用线段树维护一下区间最大值的ididid,让后维护一个dpdpdp即可。// Probl原创 2021-08-11 14:15:23 · 177 阅读 · 1 评论 -
2021牛客暑期多校训练营7 xay loves trees dfs序 + 主席树
传送门文章目录题意:思路:题意:给你两棵树,让你在第一棵树选一条最长的深度递增的链,链上每一个点在第二棵树上都不互为祖先。n≤3e5n\le3e5n≤3e5思路:之前做过差不多的题传送门。之前哪个题是不需要连续的,所以比较好写,这个题要求连续,即为一条链,所以能难点。比赛的时候写了个滑动窗口假算法,貌似还挺容易就能卡死的。。直接来说正解吧,考虑dfsdfsdfs序的区间要么某个区间全部包含某个区间,要不就是两个区间没有交集。利用这个性质,我们考虑在第二棵树上跑一个dfsdfsdfs序,在原创 2021-08-08 18:35:39 · 221 阅读 · 0 评论