![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
lcc_cat
呵呵
展开
-
BZOJ1095 Hide 捉迷藏 分治
%%% http://blog.csdn.net/qq_34454069/article/details/78757007题目Jiajia和Wind是一对恩爱的夫妻,并且他们有很多孩子。某天,Jiajia、Wind和孩子们决定在家里玩捉迷藏游戏。他们的家很大且构造很奇特,由N个屋子和N-1条双向走廊组成,这N-1条走廊的分布使得任意两个屋子都互相可达。 游戏是这样进行的,孩子们负责躲藏,Jiaj原创 2017-12-09 17:20:25 · 222 阅读 · 0 评论 -
matrix
题意定义一个矩阵价值为它的不相同的行的个数给出n*m大小的矩阵,求它的所有子矩阵的价值题解这个问题相当于对于每个(p,S)(p为左端点所在列,S为一个字符串(em…这里跳了一步,我们可以把数字序列看成字符串))在多少个(x,y)中满足∃z∈[x,y]\exist z ∈[x,y]∃z∈[x,y],从z行p列开始的字符串和S相同对于p=1,我们可以这样,将这N行看做是N个字符串,然后插入一...原创 2019-01-12 07:27:42 · 204 阅读 · 0 评论 -
BZOJ2555 SubString
题意要求你在线支持下面几个操作:1.在当前字符串末尾插入一个字符串2.查询一个字符串作为子串在当前字符串中出现了多少次题解后缀自动机显然出现次数就是对应节点right大小对吧那么动态维护怎么做呢?LCT再详细的讲讲怎么用LCT维护fail树(好像也叫parent树来着)吧(此处注意LCT并不完全是正常的LCT)简单的讲,就是正常的SAM新建节点时在LCT新建节点,更新后缀链接时...原创 2019-01-07 11:12:10 · 123 阅读 · 0 评论 -
sequence
题意定义一个序列是K好的,当且仅当其所有元素的按位与的值能被K整除给出一个长度为N的序列A和K,每次询问[L,R]中有多少个连续子序列是K好的题解由于按位与运算是不增的,我们可以把相同的后缀与值分段存下来,显然不会有超过30个段这就很有意思了我们可以离线处理,按询问的右端点排序,然后我们从左往右枚举以当前位置为右端点的...原创 2019-01-11 21:56:31 · 394 阅读 · 0 评论 -
bzoj 3809 Gty的二逼妹子序列
题目一个n个元素的数组,元素大小∈[1,n],每次询问[l,r]中,数值[s,t]中出现了多少种n<=1e5,m<=1e6题解比较容易发现的做法是莫队然后用树状数组维护这样复杂度就是O(nmlogn)O(n\sqrt mlogn)O(nmlogn)的于是应该就T了其实我还专门交了发试试,确实T了…关注到n和m不同我们分析一下需要的操作1.插入&删除 O(n...原创 2019-01-10 19:37:54 · 167 阅读 · 0 评论 -
光线追踪
题意有两种操作1.插入一个每条边与坐标轴平行的矩形()2.从原点射出一个光,问他最先碰到那个矩形(所有点都在x轴正半轴或y轴正半轴或第一象限中)题解离线处理啦我们通过极坐标排序,我们可以离散化,每个矩形我们就可以看做是覆盖了一段极角坐标显然我们可以把一个矩形简化成左边和下边那两条线段然后我们可以用两棵线段树来维护线段(真·线段树)我们分开处理横的和纵的然后分别更新啦,可以由于...原创 2019-01-04 20:31:19 · 218 阅读 · 0 评论 -
bzoj 2303 方格染色
题目描述Sam和他的妹妹Sara有一个包含n × m个方格的表格。她们想要将其的每个方格都染成红色或蓝色。出于个人喜好,他们想要表格中每个2 × 2的方形区域都包含奇数个(1 个或 3 个)红色方格。例如,右图是一个合法的表格染色方案(在打印稿中,深色代表蓝色,浅色代表红色) 。 可是昨天晚上,有人已经给表格中的一些方格染上了颜色!现在Sam和Sara非常生气。不过,他们想要知道是否可能...原创 2018-08-30 16:16:07 · 338 阅读 · 0 评论 -
树链剖分的初步学习
综述在熟练泼粪树链剖分之前,我们先要引进新概念(不是某魔性英语教材): 重边:对于某非叶子节点u,其儿子v中满足v的子树最大的边(u,v)即为重边 轻边:一棵树上不是重边的边就是轻边 重链:连在一起的重边 怎样找到所有的重边呢? 我们通过两个dfs实现//sz为子树大小,deep为深度,son为重儿子,len为重链长度,top为重链的顶端点//treeid为从原点至偏移后的点,fromi原创 2017-12-21 12:34:57 · 242 阅读 · 0 评论 -
无旋treap的初步学习
无旋treap是一种诡异的平衡树 最主要的操作 就是split(拆分成两棵子树)和merge(合并为一棵子树)update操作这个。。。就不讲了吧。因题而异。 所以我写出来是为了什么?split操作分为两种 一种是以前k个和剩下的来拆分,适用于区间操作时//r1为前k个的子树的根,r2为剩下的子树的根void split_treap(int x,int k,int& r1,int& r2)原创 2017-12-03 21:30:29 · 325 阅读 · 0 评论 -
bracket
题目一棵树,每个节点上是左括号或者右括号,定义S(x,y)为树上从x走到y,原创 2019-01-10 08:54:35 · 298 阅读 · 0 评论