随笔分类 - 数据结构
就是各种并不对劲的数据结构
摘要:#####题目大意 有人用错误的树状数组维护长度为$n$的01串$a_1,...,a_n$的区间异或和。 错误的树状数组: void add(int x){for(;x;x-=lowbit(x))tr[x]^=1;return;} int ask(int x){int k=0;for(;x<=n;x
阅读全文
摘要:#####题目大意 有$n$个点的树,给出$m$条关键路径。 问有多少对点满足连接它们的简单路径是至少1条关键路径的一部分。 \(n,m\leq 10^5\) #####题解 可以对于每个点,求出和它在同一条路径上的点有多少个。 也就是所有过它的关键路径的端点的虚树除它以外有多少个点。 虚树中的边数
阅读全文
摘要:CF1236D Alice&Doll 题目描述 有一个机器人在一个$n\times m$的有$k$个障碍网格上移动,上北下南左西右东。 它一开始在第一行第一列,面朝东边。它在每个格子上可以右转一次或不右转,然后会向面向的方向走一步。 问能不能将所有不是障碍的格子都走恰好一遍。$n,m,k\leq10
阅读全文
摘要:题意 有$n$($n\leq 5000$)个平行于x轴或平行于y轴的线段。求这些线段围成了多少个长方形。由多个长方形拼成的也算。 题解 考虑暴力的做法:先分别计算每条横着的线与哪些竖着的线有交点,再枚举两条横着的线,求与它们都有交点的线的个数,在这些线中选两条和这两条横着的线拼成长方形。 发现与同一
阅读全文
摘要:CF1239B The World Is Just a Programming Task 题目描述 定义一个括号序列s是优秀的,当且仅当它是以下几种情况的一种: 1.|s|=0 2.s=‘(’+t+‘)’,其中t是优秀的 3.s=t1+t2,其中t1、t2都是优秀的 一个括号序列的价值为将它看成一个
阅读全文
摘要:题目大意 有一个$n\times m$的网格,每个位置是黑色或者白色。$k$个操作,每个操作是将一个白格子染黑,操作后输出当前最大的白色正方形的边长。$n,m,k\leq 2\times 10^3$ 题解 发现在每次操作是把白格子变黑,会使答案变小。维护“变小的最大值”听上去不太舒服。考虑把操作全都
阅读全文
摘要:题意 有一棵$n$($n\leq 10^5$)个点的树,$m$($m\leq 2\times 10^5$)个操作。操作有三种:1.给出$u,v,k$,表示加入一条从$u$到$v$权值为$k$的路径;2.给出$k$,表示删除$k$时刻加入的路径;3.给出$x$,表示询问不经过点$x$的路径的权值最大值
阅读全文
摘要:题目大意 有一个串$s$,一开始只知道它的一个前缀。有$q$($q\leq 10^4$)个操作,操作有两种:1.给一个字符串,表示$s$($s$总长$\leq 6\times 10^5$)当前未知部分的前缀;2.给一个字符串,问$s$的已知部分中有几个子串和该串相同,询问串总长$\leq 3\tim
阅读全文
摘要:题目大意 给出一个字符串$S$,长度为$n$($n\leq 10^5$),$S[l:r]$表示$S_l,S_{l+1}...,S_r$这个子串。有$m$($m\leq 3\times 10^5$)次询问,每次询问给出$l,r$,问有多少对$(i,j)$($1\leq irl$时,第一刀切在$[r_i
阅读全文
摘要:题目大意 $n$个点的树,每条边上有一个小写字母。 操作:给定2个点$u$,$v$($u$可能等于$v$)和一个非空字符串$s$,问从$u$到$v$的简单路径上的所有边按照到$u$的距离从小到大的顺序排列后,边上的字符依次拼接形成的字符串中给定的串$s$出现了多少次。 $n,m\leq 10^5,\
阅读全文
摘要:题目大意 有$n$($n\leq5\times10^5$)个数$a_1,a_2,...a_n$($a_i\leq 2^{32} 1$) 求区间异或和前$k(k\leq2\times10^5)$大之和 题解 考虑二分,找出第$k$大异或和是多少 将每个位置上的数变成前缀异或和$s_i$后,建出可持久化
阅读全文