线段树
小蒟蒻pbc
2018-2022 北京师范大学人工智能学院(本科)
2022-2027 北京大学智能学院(直博)
展开
-
mex(主席树)
mex题意数据范围思路代码题意有一个长度为nnn的数组{a1,a2,…,an}\{a_1,a_2,\dots, a_n\}{a1,a2,…,an}。mmm次询问,每次询问一个区间内最小没有出现过的自然数。数据范围1≤n,m≤2×1051 \leq n, m \leq 2 \times 10^51≤n,m≤2×1050≤ai≤1090 \leq a_i \leq 10^90≤ai≤109思路很经典的一道应用主席树的题目。每个区间记录这个去年所有数最近出现位置的最小值,如果说某个数小于等于原创 2020-11-25 14:42:50 · 420 阅读 · 0 评论 -
Joy of Handcraft(线段树)
Joy of Handcraft题意数据范围思路代码题意有nnn个灯泡,每个灯泡有两个参数tit_iti和xix_ixi,分别指运行周期和亮度。第iii个灯泡在2kti+12kt_i+12kti+1秒到2kti+ti2kt_i+t_i2kti+ti秒是亮的,在2kti+ti+12kt_i+t_i+12kti+ti+1秒到2kti+2ti2kt_i+2t_i2kti+2ti秒是灭的。问第111秒到第mmm秒,每一秒亮度最大值是多少。数据范围1≤T≤1001 \leq T \leq 1原创 2020-11-05 14:18:54 · 318 阅读 · 0 评论 -
花神游历各国(线段树)
花神游历各国题意数据范围思路题意给定一个长度为nnn的序列,支持两种操作:返回区间和区间每个数开根操作个数为mmm数据范围1≤n≤1051\leq n \leq 10^51≤n≤1051≤m≤2∗1051\leq m \leq 2*10^51≤m≤2∗1050≤wi≤1090\leq w_i \leq 10^90≤wi≤109思路这道题显然要用线段树维护。首先看区间每个数的修改,第一反应是懒标记,但是发现难以维护。这个时候,我们思考一下开方,对于每个数,大概执行555次开方操作就原创 2020-10-21 19:51:37 · 210 阅读 · 0 评论 -
Legacy(线段树优化建图)
Legacy题意数据范围思路代码题意给定nnn个点,现在有333种连边操作。第一种,点uuu向点vvv连一条长度为www的边。第二种,点uuu向[l,r][l,r][l,r]区间内的所有点连一条长度为www的边。第三种,[l,r][l,r][l,r]区间内的所有点向点uuu连一条长度为www的边。现在给定qqq个操作,问这些操作过后,起点到其他点最短距离为多少。数据范围1≤n,q≤1000001 \leq n,q \leq 1000001≤n,q≤1000001≤v,u,l,r≤n1 \l原创 2020-10-17 09:44:29 · 366 阅读 · 0 评论 -
动态开点线段树
动态开点线段树应用场景代码模板(区间求和为例)应用场景对于数据量比较大的题目,为了降低空间复杂度,可以不用建出整颗线段树的结构,而是在最初只建立一个根节点,代表整个区间。当需要访问线段树的某棵子树(某个子区间)时,再建立代表这个子区间的节点。采用这种方法维护的线段树称为动态开点的线段树。代码模板(区间求和为例)#include <iostream>#include <cstdio>#include <cstring>#include <algorith原创 2020-10-17 00:35:15 · 515 阅读 · 0 评论 -
慢慢变小的序列(线段树)
慢慢变小的序列题意数据范围思路代码题意给一个长度为nnn的序列A1,A2,…AnA_1,A_2,\dots A_nA1,A2,…An,你需要支持以下两种操作:操作1:L R X Y,对所有的L≤n≤RL \leq n \leq RL≤n≤R赋值Ai=min(Ai,(i−L)∗Y+X)A_i = min(A_i, (i - L) * Y + X)Ai=min(Ai,(i−L)∗Y+X)。其中L,R,X,Y均为整数,且有 1≤L≤R≤n1\leq L \leq R\leq n1≤L≤R≤n,∣X原创 2020-10-16 10:28:13 · 323 阅读 · 1 评论