区间最小值 Time Limit : 3000/1000ms (Java/Other) Memory Limit : 65535/32768K (Java/Other) Total Submission(s) : 12 Accepted Submission(s) : 5 Font: Times N ...
分类:
编程语言 时间:
2017-05-29 18:23:18
阅读次数:
181
线段树,暴力。 先处理出每个点直接能感染到的最左边的和最右边的。 之后每次扩展,看向左能到达的那些点中,最左以及最右能到哪些点,更新。 看向右能到达的那些点中,最左以及最右能到哪些点,更新。 最左最右能到哪些点,可以用线段树计算区间最小值最大值。 如果某次无法更新,那么结束。 ...
分类:
其他好文 时间:
2017-05-13 22:16:57
阅读次数:
233
原题传送门 就是裸RMQ啊。。 求区间最大值和区间最小值,一看就像RMQ,当然线段树貌似也可以。 至于算法嘛。自己学~(好吧,放个传送门。。。) 然后就是最后把maxsum-minsum就好啦233~ 时间效率:预处理O(N)查找O(1) 是不是很快~ 下面贴代码 ...
分类:
其他好文 时间:
2017-05-10 15:43:00
阅读次数:
141
传送门 把线段都读进来然后排序,先按右端点为第一关键字从小到大排序,后按左端点为第二关键字从小到大排序。 注意不能先按左端点后按右端点排序,否则会出现大包小的情况,如下: —————— ——— — 然后直接线段树搞就行,先求区间最小值,如果大于零就更新统一减1。 ——代码 1 #include <c ...
分类:
其他好文 时间:
2017-05-07 21:17:24
阅读次数:
353
题意: 给出一个排列$A$,问是否能够经过以下若干次变换变为排列$B$ 变换:若${A_i> A_i+1}$,可以${swap(A_i,A_i+1)}$ 考虑一个数字从A排列到B排列连出来的路径与其他数字是否相交,相交就表示大小关系需要判断,(类似于二维偏序)用线段树维护区间最小值即可。 权值为1, ...
分类:
其他好文 时间:
2017-02-08 10:27:10
阅读次数:
162
题意:给定一个正整数序列,操作是1.区间赋值,2.区间大于x的数与x取gcd,最后输出操作后的序列 用平衡树维护相同数组成的连续段,每次操作至多增加两个连续段,操作2记录一下区间最小值然后暴力修改,每个数在被修改次数不会超过质因数个数,于是均摊单次修改复杂度在log^2(n)左右 ...
分类:
其他好文 时间:
2017-01-23 17:15:12
阅读次数:
184
题意: 给你一个n*m(1e3)的矩阵,让你找出元素全部相同的子矩阵的个数。 思路: 可以预处理向左和向上的最大相同长度,然后对于每列用rmq维护一个区间最小值, 这个值表示向左延伸的长度,然后对于当前的元素,二分查找距离他最近的值小于他的上一个位置, 然后当前位置的贡献就是向左延伸的长度*纵坐标之 ...
分类:
其他好文 时间:
2016-12-09 18:42:15
阅读次数:
171
10^4以内只由4和7构成的数字只有31种,那么做法就很简单了,求出每个数字与其最接近的幸运数的差值,然后建立线段树,线段树维护区间最小值和最小值个数,如果操作过程中最小值<0,那么就去对差值进行暴力修改,直到区间差值>=0,很明显线段树每个叶子节点不会被修改超过31次,询问操作的话差值=0的数字就 ...
分类:
其他好文 时间:
2016-08-06 12:55:12
阅读次数:
178
点击打开链接
题意:给一个树,三种操作,一个是将第I条边的权值改变,一个是将u到v的所有边的权值取反,一个是询问u到v的路径中边的最大值
思路:和模版的树链剖分没什么区别,这题唯一的坑点就是线段树的懒惰标记,只要有更新操作或者查询操作就都要pushdown(),然后改权值的比较简单,单点更新,而区间取反我们可以用两个数组直接模拟,一个最大值的,一个区间最小值的,然后一旦取反了,就将最大值改为负...
分类:
其他好文 时间:
2016-07-11 17:19:59
阅读次数:
278