离散化
Frozen_Guardian
已退役菜鸡Acmer
展开
-
CodeForces - 817F MEX Queries(线段树lazy序)
题目链接:点击查看题目大意:初始时有一个空的集合,需要执行 n 次操作:1 l r:将区间 [ l , r ] 内未出现的数加入到集合中 2 l r:将区间 [ l , r ] 内出现的数字全部删除 3 l r:将区间 [ l , r ] 内未出现的数加入到集合中,同时将区间 [ l , r ] 内出现过的数字全部删除每次操作后取集合的 MEX题目分析:HDU - 3397的弱化版简化版题意就是,初始时有一个全 0 的序列,操作 1 是将区间内的数全部修改为 1,操作 2 是将区间内.原创 2020-11-26 21:49:26 · 244 阅读 · 2 评论 -
CodeForces - 1420D Rescue Nibel!(组合数学+离散化)
题目链接:点击查看题目大意:给出 n 盏灯,每盏灯在 [ l , r ] 这段时间内会保持点亮的状态,问恰好有 k 盏灯同时点亮,有多少种组合方式题目分析:因为每盏灯都有一个开始亮的时间和一个熄灭的时间,不难想到用差分去维护每盏灯点亮的时间,不过如果是对于每个时间戳去计算贡献的话,很容易重复计算,因为在不同的时间戳上,如果选择的 k 盏灯相同的话,是不会重复计算贡献的,但是每盏灯都有一个开始亮的时间,也就是 l[ i ],所以我们不妨从这里入手对于某个时间戳来说,此时如果有 sum 个灯是亮着的原创 2020-09-26 14:38:51 · 502 阅读 · 0 评论 -
洛谷 - P4168 [Violet]蒲公英(分块+离散化)
题目链接:点击查看题目大意:给出一个长度为 n 的数列,再给出 m 次查询,每次查询区间 [ l , r ] 内的众数,要求强制在线题目分析:对于这个题意来说,如果允许离线的话,完全可以用莫队当模板题水过去,但强制在线的话就需要考虑如何分块了这里只讲一下如何实现大蓝书上的第二个方法吧首先设将数列 n 分成 T 块,每块的长度为 n / T ,接下来可以预处理出 mode[ l ][ r ] ,代表包含第 l 块到第 r 块在内的这段区间上的众数是多少,时间复杂度为 O( nT) ,空间复杂.原创 2020-05-24 02:14:21 · 443 阅读 · 0 评论 -
XJOJ - 选信封(离散化+增广路)
题目链接:点击查看题目大意:Dumbulidone和Euphemia玩一个挑卡片游戏.Dumbulidone会给出N对信封,每个信封里有两张不同颜色的卡片,她会让Euphemia从中挑选任意个信封,但是一对信封中最多只能挑选一个,(信封是透明的,可以看到里面卡片颜色)。等Euphemia挑好后,Dumbulidone会尝试从Euphemia挑出的信封中再选出若干个(不可以不取),把其中的卡片...原创 2020-02-26 16:09:51 · 725 阅读 · 0 评论 -
CodeForces - 1311F Moving Points(线段树+离散化)
题目链接:点击查看题目大意:给出 x 轴上的 n 个点,每个点都有一个位置和一个速度,每个点会根据速度在 x 轴上移动,现在规定dis( x , y )为点 x 和点 y 在移动过程中的最小距离,我们需要求出题目分析:比赛时看到这个题知道是可以切的一道题,但没想到给复杂化了,在推出结论和公式后选择了用不太熟悉的主席树去实现,导致最后时间到了也没有debug出来,赛后补题时发现用线段树就可以...原创 2020-02-26 01:43:28 · 321 阅读 · 0 评论 -
CodeForces - 1285E Delete a Segmen(线段树+区间合并+离散化)
题目链接:点击查看题目大意:给出n个线段代表集合,现在问若可以将其中任意一个线段删除,则能够形成最多多少个独立的集合(取并集后)题目分析:看到区间不难想到线段树了,虽然这个题也可以用stl贪心做,但需要考虑的因素太多了,还是用线段树直接莽吧,虽然前期的理论已经准备的很充分了,但在中途写线段树的时候还是写崩了,最开始的那个线段树没有想太多,直接更新到叶子结点,TLE,加个lazy优化一下吧,...原创 2020-01-12 01:13:03 · 1620 阅读 · 4 评论 -
POJ - 3179 Corral the Cows(离散化+二分+二维前缀和)
题目链接:点击查看题目大意:在二维平面中给出n个点,每个位置都有一个一个三叶草,现在需要求出一个长方形区域,要求长方形边长最短,并且面积内部包含至少C个三叶草题目分析:题目给出的n最大为500,但是x和y达到了1e5,肯定不能直接维护前缀和,我们只能离散化一下,然后维护一个500*500的前缀和,因为要求的矩阵区域是正方形,所以我们可以直接二分长方形的边长,然后每次最多500*500的时间...原创 2019-12-04 23:52:52 · 401 阅读 · 0 评论 -
CodeForces - 670C Cinema(离散化+排序/map,水题)
题目链接:点击查看题目大意:有m部正在上映的电影,每部电影的语音和字幕都采用不同的语言,用一个int范围内的整数来表示语言。有n个人相约在一起去看其中一部电影,每个人只会一种语言,如果一个人能听懂电影的语音,他会很高兴,如果他能看懂字幕,他会比较高兴,如果语音和字母都看不懂,他会不开心,现在要求我们选择一部电影让这n个人一起看,使很高兴的人数最多,若答案不唯一,则在此条件下再让比较高兴的人最多...原创 2019-11-28 18:15:56 · 433 阅读 · 0 评论 -
HDU - 3804 Query on a tree(主席树维护最大值+离散化)
题目链接:点击查看题目大意:给出一棵树,每条边上都有一个权值,给出m个查询:a,b:问从点1到点a的唯一路径上,在边权小于等于b的边中选出边权最大的值输出,若没有符合条件的边则输出-1;题目分析:时隔三个月再次重温这个题目,感觉这个题目真的就简单多了,直接剖完然后离线线段树做就行了,所以为了挑战一下自己,我选择用主席树写了一发,不得不说,这个题目内存卡的真死,权值的数据给到了1e9,本来想...原创 2019-11-11 00:32:17 · 435 阅读 · 0 评论 -
SPOJ - COT Count on a tree(LCA+主席树+离散化)
题目链接:点击查看题目大意:给出一棵树,每个点都有一个权值,现在给出m个询问,每次询问的格式是u,v,k,要求输出u-v这条路径上第k大的数题目分析:一看到第k大的数就会想到主席树,既然是在树上的操作,我们就需要用lca先把u-v这条路拿出来,具体的还是用树上倍增来实现,然后在dfs的过程中建立一棵可持久化的线段树,也就是主席树,在查询的时候就可以直接对于u-lca-v这条路上直接查询了,...原创 2019-11-08 02:11:35 · 338 阅读 · 0 评论 -
HDU - 5877 Weak Pair(离散化+树状数组+dfs序)
题目链接:点击查看题目大意:给定一个n个节点的树,每个节点都有权值,现在定义weak pair(u,v)需要满足的两个条件:u是v的祖先; ;问给定的树中有多少个weak pair;题目分析:我们可以将问题转化一下,要求,可以两边同除,得到,即用dfs序从根节点跑一边树,记录截止到任意子节点为止,之前有多少个小于等于的父节点即可,用树状数组或线段树维护数量就行,这里偷个懒用树状数组...原创 2019-08-18 20:04:24 · 261 阅读 · 0 评论 -
POJ - 2528 Mayor's posters(线段数+离散化)
题目链接:点击查看题目大意:给定一个长度为1e7的墙,然后给出n张海报,每张海报都会占据墙上的一部分宽度,问按照给出的次序往墙上贴海报,最后有几张海报能露出来(露出部分也算)题目分析:线段树的区间更新,因为数据过大,必须先用离散化预处理一下给出的海报,不过这个题目需要注意,使用传统的离散化会有bug,例如一组样例:1,10、1,4、6,10正确答案应该是3,而用错误的离散化得到的结...原创 2019-08-04 18:52:40 · 279 阅读 · 0 评论 -
(转)离散化:两种离散化方式详解
引入离散化,就是把一些很离散的点给重新分配。举个例子,如果一个坐标轴很长(>1e10),给你1e4个坐标,询问某一个点,坐标比它小的点有多少。很容易就知道,对于1e4个点,我们不必把他们在坐标轴上的位置都表示出来,因为我们比较有多少比它小的话,只需要知道他们之间的相对大小就可以,而不是绝对大小,这,就需要离散化。而离散化又分为两种,分为的两种是对于重复元素来划分的。第一种...转载 2019-08-04 16:06:42 · 1660 阅读 · 0 评论 -
POJ - 2299 Ultra-QuickSort(线段树+离散化/归并排序)
题目链接:点击查看题目大意:给出n个数字,求使用冒泡排序所需要交换的次数题目分析:这个题n给到了5e5,如果直接冒泡排序的话,的时间复杂度肯定就TLE了,所以不能直接暴力模拟我们换个思路,这个题其实需要转化一下,就是求每个位置上数字的逆序数,然后加和就是所要求的答案了因为相对较大的数字经过排序后要往右边移动,而任意位置的一个数字所要移动的距离就是他的逆序数,即需要和每一个他右边...原创 2019-08-04 15:02:55 · 323 阅读 · 0 评论