- 博客(4)
- 收藏
- 关注
原创 一种新的求逆序对的方法
大家都知道,nlogn求逆序对有两种方法,一种是归并排序,另一种是树状数组,但今天在做题时偶然想到另一种新的方法(不知道有没有人发现过,没有的话那就…) 这种方法前置知识挺简单,就知道分治和二进制就行,好处在于不用进行离散化,而且可以处理某些需要考虑二进制位的题目,复杂度也十分可观,nlogn 首先,考虑二进制的某一位,在高于这一位的其他位都相同的子序列,例如:29 27 30 25 26,二进制都是11开头,考虑第三位,我们将第三位是否为0把他分成两个数组【27,25,26】, 【29,30】。再将这两
2022-03-08 23:57:22 169
原创 整体二分 (无带修)
整体二分 不带修的整体二分是离线的,除了占用空间小,用处不是很多。但是…你也想不到出题人会不会卡你空间,所以,还是看看吧… 前置知识 二分答案 树状数组 分治 首先,能用整体二分的要满足以下条件: 对单个子问题可以用二分答案解决问题 题目是离线的,没有强制在线 子问题对答案的贡献可叠加 接下来进入正题(不会二分答案的可以先去学学再来看) 首先先看一道题(洛谷p3834) 考虑对某一个询问进行处理,我们想到的是二分答案,不仅如此,在这道题中,所有的询问都是离线的,那我们可以试试整体二分。 (下面的图
2021-10-01 23:08:21 134
原创 二维线段树
考虑一个问题,在一个二维的坐标面上,要对一个矩形内所有的点进行区间加(减),或求某一个范围内的区间和,这时候,一维线段树已经不适用了,那应该怎么办?来个二维的线段树(线段树套线段树) 考虑某一个x的坐标值,在它上面建一颗线段树,维护这个X值上y轴的区间信息,这个问题可以看成一个子问题,在一个数轴内进行区间修改区间查询,(很明显的普通线段树)。 在对每一个坐标都进行这样的操作后,想一想线段树的核心思想,不就是将这些单一的结点逐步合成一个区间吗,那x轴上的这一系列的点不也可以慢慢合成一个个区间? //左边的数轴
2021-09-28 18:17:24 181
原创 牛客暑假多校训练7 F xay loves trees
题意:https://ac.nowcoder.com/acm/contest/11258/F 给出两树S1, S2, 求一个点集,满足这个点集上的点都在S1上的一条链上(且联通),并且在S2中,这个点集任意两点没有祖先关系。 首先, 我们可以先预处理S2, 求出S2中每个点的dfs序,并记录这个点及其的后代的dfs序的范围,这样一来,每个点的dfs 序就都是一个连续的区间,且该点的后代的dfs序区间包含在它的祖先的区间里,这样操作的好处在于如果两个节点没有祖先关系,那他们的dfs序的区间就不会互相
2021-08-08 01:10:44 634 4
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人