树状数组 / 线段树
文章平均质量分 64
ixRic
ixRic
展开
-
[SP2916 GSS5] Can you answer these queries V(线段树 + 细节) | 错题本
文章目录题目分析代码题目[SP2916 GSS5] Can you answer these queries V分析先考虑两个区间不相交的情况:只需要求 [l1,r1][l_1, r_1][l1,r1] 的前缀和最小值和 [l2,r2][l_2, r_2][l2,r2] 的前缀和最大值,相减就是答案。再考虑两个区间相交的情况,相交部分用 GSS1 解决即可,未相交部分考虑两种情况:左端点在 [l1,l2][l_1, l_2][l1,l2] 右端点在 (l2,r2](l_2, r_2](l原创 2020-11-17 10:36:51 · 157 阅读 · 0 评论 -
[SP2713 GSS4] Can you answer these queries IV(暴力线段树) | 错题本
文章目录题目分析代码题目[SP2713 GSS4] Can you answer these queries IV分析同 上帝造题的七分钟2 / 花神游历各国。代码#include <bits/stdc++.h>typedef long long LL;LL Read() { LL x = 0; bool f = false; char c = getchar(); while (c < '0' || c > '9') f |= c == '-', c =原创 2020-11-17 10:29:35 · 137 阅读 · 0 评论 -
[洛谷 P4145] 上帝造题的七分钟2 / 花神游历各国(暴力线段树) | 错题本
文章目录题目分析代码题目[洛谷 P4145] 上帝造题的七分钟2 / 花神游历各国分析每个数不断开根下取整,最终会变成 111,显而易见的是只需要开极少的次数一个数就能变成一,这个次数是 log2log2n+1\log_2\log_2 n + 1log2log2n+1。因此线段树区间修改时如果该区间没有全部变成 111,就暴力一个一个改即可。代码#include <bits/stdc++.h>typedef long long LL;LL Read() { LL x原创 2020-11-17 10:26:56 · 159 阅读 · 0 评论 -
[SP1557 GSS2] Can you answer these queries II(离线 + 线段树) | 错题本
文章目录题目分析代码题目[SP1557 GSS2] Can you answer these queries II分析思路很巧妙。先离线所有询问,然后考虑从左到右依次加入每个数,然后考虑如何求目前一个区间的最大子段和:子段无非是两个端点,我们可以用一个数组维护其中一个端点确定时,另一个端点的最优位置,即 aia_iai 表示目前以 iii 为左端点的子段和的最大值,由于是动态加入的,所以 aia_iai 实际记录的就是从 iii 到“当前位置”的子段和的历史最大值。然后我们要知道的是左端点滑动原创 2020-11-17 10:15:30 · 168 阅读 · 0 评论 -
[SP1043 GSS1] Can you answer these queries I(线段树) | 错题本
文章目录题目分析代码题目[SP1043 GSS1] Can you answer these queries I分析线段树维护 lft, mid, rgt 分别代表选左端点的最大子段和、最大子段和、选右端点的最大子段和即可。代码#include <bits/stdc++.h>int Read() { int x = 0; bool f = false; char c = getchar(); while (c < '0' || c > '9') f |= c原创 2020-11-17 09:45:04 · 168 阅读 · 0 评论 -
[CodeForces 1401F] Reverse and Swap(线段树懒标记优化) | 错题本
文章目录题目分析代码题目[CodeForces 1401F] Reverse and Swap分析直接对序列建线段树,Replace 和 Sum 是基本操作。首先可以发现 Reverse 操作是将某一层以及其下面的所有节点左右儿子交换,Swap 操作是将某一层的所有节点左右儿子互换。如果直接对每个节点开懒标记的话,PushDown 操作十分困难。发现一次操作实际上是改变的一层的状态,因此只需要对每层开一个标记表示该层的每个节点是否需要互换左右儿子即可。代码#include <bits/st原创 2020-09-16 21:33:46 · 223 阅读 · 0 评论 -
[SDOI 2014] 数表(莫比乌斯反演 + 树状数组) | 错题本
文章目录题目分析题目[SDOI 2014] 数表分析∑i=1n∑j=1m⌊alcm(i,j)⌋=∑i=1n∑j=1m⌊alcm(i,j)ij⌋\begin{aligned}&\sum_{i = 1}^n\sum_{j = 1}^m \left\lfloor\frac{a}{\text {lcm}(i, j)}\right\rfloor \\ =&\sum_{i = 1}^n\sum_{j = 1}^m \left\lfloor\frac{a\text{lcm}(i, j)}{ij}\原创 2020-09-11 10:58:10 · 143 阅读 · 0 评论 -
[CodeForces 750E] New Year and Old Subsequence(动态 DP) | 错题本
文章目录题目分析错因代码题目CF750E New Year and Old Subsequence分析设 dp[i][0/1/2/3/4]dp[i][0/1/2/3/4]dp[i][0/1/2/3/4] 表示前 iii 个数字只能依次匹配到 ϕ/{2}/{2,0}/{2,0,1}/{2,0,1,7}\phi/\{2\}/\{2, 0\}/\{2, 0, 1\}/\{2, 0, 1, 7\}ϕ/{2}/{2,0}/{2,0,1}/{2,0,1,7} 的最小删除代价,则 dp[i][0]={dp[i−1原创 2020-07-27 13:03:31 · 217 阅读 · 1 评论 -
[SPOJ 1716 GSS3] Can you answer these queries III(动态 DP) | 错题本
文章目录题目分析错因代码题目Can you answer these queries III分析本题当然可以用传统线段树做记 fif_ifi 表示以 aia_iai 结尾的最大子段和,gig_igi 表示前 iii 个数的最大子段和。则 fi=max{fi−1+ai,ai}gi=max{fi,gi−1}=max{fi−1+ai,ai,gi−1}\begin{aligned} f_i &= \max\{f_{i - 1} + a_i, a_i\} \\ g_i &= \m原创 2020-07-27 10:08:36 · 301 阅读 · 1 评论 -
[CodeForces 280D] k-Maximum Subsequence Sum(毒瘤线段树)
分析对于每个询问,执行k次如下操作:求[l,r]的最大子段和,加进ans,然后把该字段所有元素变成它的相反数。当然,这个过程中如果[l,r]的最大子段和出现了负数,直接退出。输出答案。直观上这个做法很好理解,相当于很多次求前缀和的过程。据说可以用网络流证。原创 2019-10-09 19:09:45 · 303 阅读 · 0 评论 -
【NOIP2018提高组】D1T1 铺设道路
文章目录题目思路考场考场代码hack题外话正解题目题目描述春春是一名道路工程师,负责铺设一条长度为nnn的道路。铺设道路的主要工作是填平下陷的地表。整段道路可以看作是nnn块首尾相连的区域,一开始,第iii块区域下陷的深度为did_idi。春春每天可以选择一段连续区间[L,R][L,R][L,R],填充这段区间中的每块区域,让其下陷深度减少 111。在选择区间时,需要保证,区间内的每块...原创 2018-11-17 10:00:16 · 552 阅读 · 0 评论 -
【UVA - 1354】Mobile Computing(搜索+存储解答树+线段树思想+树形DP思想)
前言题目题目大意分析代码前言确实是一道从未遇见过的神奇搜索题。题目传送门题目大意在一个宽度为r(0<r<10)r(0<r<10)r(0rrr为浮点数)的房间中,你想利用杠杆原理挂起s(1≤s≤6)s(1≤s≤6)s(1\leq s\leq 6)个物品,每根木棍的长度都是111,木棍的两端可以挂一个物品,或者挂另外一根木...原创 2018-08-27 17:44:22 · 656 阅读 · 0 评论 -
C++树状数组详解
引入如果给你n个数,然后进行q次询问,每次询问一个区间[x,y]的和,你会怎么做? 第一种方法:最简单的方法,用数组存起来,每次枚举x-y,ans加起来就可以,时间复杂度O(qn),十分慢。 第二种方法:或许大多数人会使用前缀和数组:sum[i]=a[1]+a[2]+…+a[i],所以求[x,y]只需要输出sum[y]-sum[x-1]即可,时间复杂度O(n),这是最快的方法之一了。原创 2017-04-28 13:32:53 · 11854 阅读 · 0 评论 -
【树状数组】Stars
C - Stars Astronomers often examine star maps where stars are represented by points on a plane and each star has Cartesian coordinates. Let the level of a star be an amount of the stars that a原创 2017-03-03 14:05:11 · 2297 阅读 · 4 评论