
ACM—线段树
文章平均质量分 95
线段树练习
Auto114514
摆烂ing
展开
-
AtCoder Beginner Contest 397 F题(线段树)
因此,对于额外产生的贡献,我们可以用线段树实现区间加法,并维护区间最大值。假设我们现在已经枚举了第一个区间与第二个区间的分界点。的数字,如果其出现了多次,则下一次出现的下标为。表示第二个区间的起始端点。如果第二个区间与第三个区间的分断点。表示第二个区间的终止端点)。个贡献,还有可能多产生。中有多少个不同的数。中有多少个不同的数。的值相同的数的下标。所以,最终的答案就是。原创 2025-03-16 12:04:41 · 1044 阅读 · 0 评论 -
Educational Codeforces Round 166 D. Invertible Bracket Sequences(线段树,二分)
想要反转一段区间之后的字符串仍然为正则括号序列,必须满足: 被反转的区间内,两种括号的数量相等。否则,反转之后的字符串绝无可能是正则括号序列。,则该区间反转之后的字符串仍然为正则括号序列。因为区间被反转之后,数组的区间最大值(因为是静态的,用ST表也可以)。的区间最大值具有单调不减的性质,因此区间右端点最大的值。上使用二分来求得满足条件的右端点的个数即可。,而想要字符串为正则括号序列,则所有的。,之后预处理出字符串的前缀和数组。枚举每一个被反转区间的左端点。,被反转区间的区间和为。的值所对应的数组下标。原创 2024-10-27 18:02:38 · 1040 阅读 · 0 评论 -
Codeforces Round 271 (Div. 2) F题 Ant colony(线段树,二分)
原问题的补集为能整除区间内所有数的数的个数。存储每一个数的下标,在查询的时候可以二分查找。的数的个数,我们可以使用。为了查找一个区间内值为。原创 2024-10-14 19:41:43 · 600 阅读 · 0 评论 -
Codeforces Round 971 (Div. 4) G1题 Yunli‘s Subarray Queries (easy version)(权值线段树)
可能为负数,因此我们需要先进行离散化处理,将其全都变为正数。考虑进行预处理,将原问题转化为要求出每一个使。的最小值,即求出区间内数量最多的数的个数。因此我们可以使用权值线段树,在扫描。数组的时候动态维护当前区间内的。变成连续数组的最小操作数。,则原问题变成了求每一个。原创 2024-10-10 20:28:49 · 984 阅读 · 0 评论