"题面" 题解 我们发现经过若干次操作后这些数的相对大小都不会变 排序之后, 就只有一段前缀改为 L , 或一段后缀改为 R 了 考虑这样一个函数 $$ \displaystyle\\f(a_1, a_2, a_3) = a_1 c_i + a_2 a_i + a_3 $$ 其中 $c_i$ 代表 ...
分类:
Web程序 时间:
2020-02-11 20:50:02
阅读次数:
77
题目描述 题解: 考虑到经过一系列变化后小数不可能比大数大,我们可以用线段树维护区间修改。 重点是,每个节点都可以通过$a[i]=a[i]*t1+a0[i]*t2+t3$这个函数来表示,我们就可以把三个标记一起维护。 代码: ...
分类:
Web程序 时间:
2019-02-04 14:16:47
阅读次数:
202
题目链接:奇怪的计算器 如果没有溢出的话,所有的标记都可以在线段树上直接维护,所以一棵线段树就解决问题了。 现在有了溢出,怎么办呢? 发现就算溢出了,各个元素的相对大小关系也是不变的。所以,如果一开始就把元素排好序,溢出的数一定是两端区间。在线段树上把这两段区间找出来,区间赋值就好了。当然也需要多记 ...
分类:
其他好文 时间:
2017-04-22 14:55:07
阅读次数:
222
题解:
先排序然后插入线段树
用线段树每次对全区间进行操作。
然后维护哪些段区间溢出了,对这段区间进行赋值。
溢出处理:
一个区间的左端点大于最大值,或者右端点小于最小值
那么这个区间就该被覆盖。
覆盖,加特技:
乘0+x就是覆盖成x。
剪枝?:
一个区间右端点≤\leq最大值,或者左端点≥\geq最小值,那么return
代码:
#include
#in...
分类:
其他好文 时间:
2015-03-03 15:15:08
阅读次数:
648
题目大意:给定n个操作,每个操作有四种形式,操作之后若R就变成R,现在给定q个输入,求他们的输出
n,q
将这q个数建立线段树,四个操作都可以在线段树上完成
但是溢出怎么办呢?
容易发现若x
因为四个操作都是线性的,溢出也不会反转两个数的大小关系
那么我们可以预先将q个数排序 那么溢出的数一定是连续的两段 区间修改就行了
至于怎么找两端溢出的区间…… 每个节点维护一个区间最大值和最小...
分类:
其他好文 时间:
2015-03-01 23:51:49
阅读次数:
451