题目链接: https://www.acwing.com/problem/content/1272/ 题解: 线段树模板题,单点求和、区间查询都可 AC代码: #include <cstdio> #include <iostream> #include <algorithm> #include <c ...
分类:
其他好文 时间:
2020-02-16 22:21:04
阅读次数:
69
题目链接: "SP1043 GSS1 Can you answer these queries I" 对,$GSS$毒瘤数据结构题,就是我在 "这篇文章" 中提到的紫题。 相对其他$GSS$题简单些,~~但并不简单~~。 板子题嘛,上代码就好了,线段树烦死了 $Code$: ...
分类:
其他好文 时间:
2020-02-16 20:39:47
阅读次数:
56
这样的数据结构称作树状数组,它支持O(logN)的单点修改和区间查询,效率高并且代码简洁,缺点在于适用范围不如线段树广。不难看出(雾),tree[i]表示a[i]及之前的 lowbit(i)个 数,定义lowbit(i)等于取i的二进制中最后一个'1'表示的大小观察发现(。),修改a[i]只需更新包 ...
分类:
编程语言 时间:
2020-02-16 01:10:00
阅读次数:
72
2019杭电多校第六场的一道签到题 这次我们显然要求的二维矩阵的最大值,分析题目我们可以得到几个细节。 1.首先数据很大,肯定要离散化。 2.离散化后,我们想象有很多点在一个平面内,要统计矩阵最大值 3.我们之前接触过如何求一条线上的最大子段和,只要用线段树维护四个值就能够解决 4.根据已知,我们发 ...
分类:
其他好文 时间:
2020-02-15 11:33:29
阅读次数:
89
树链剖分,线段树维护~ #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #include <vector> using namespace std; const int MAXN = 1001 ...
分类:
其他好文 时间:
2020-02-14 23:05:58
阅读次数:
151
理解一个数据结构,我们应该首先明白该数据结构的作用与应用场景,尔后理清其逻辑结构,基于逻辑结构考虑如何在计算机上进行物理存储,最后对以上进行代码实现。 我们按上述思考顺序来实现一次线段树。 作用及应用场景 我们考虑一个场景,我们有一个长度为 n 的数组,我们需要经常进行两种操作: 1. 计算某个区间 ...
分类:
编程语言 时间:
2020-02-14 22:10:23
阅读次数:
71
有两种操作,一是给区间内所有的数开根号,二是区间求和。 线段树单点更新,区间求和的模板~ #include<cstdio> #include<algorithm> #include<cmath> using namespace std; const int maxn=1e6+14; struct n ...
分类:
其他好文 时间:
2020-02-14 20:23:34
阅读次数:
63
题意: 对于一个给定长度为N的字符串,求它的第K小子串是什么。N<=5000000,K<=1000000000。 题解: 对于本题,首先我们要做的事情是先建立后缀自动机。 如果T=0,那么每一个位置的出现次数直接设为1,T=1否则就是正常的right集合大小。 那么我们可以再记一个sum[i],表示 ...
分类:
其他好文 时间:
2020-02-13 13:13:09
阅读次数:
67
这道题用树状数组做比较好,虽然树状数组能做的线段树也可以做到,但是树状数组更简洁方便,易操作 原理便是第x个数的二进制数最后一个“1”,决定tree的结点的长度 比如: sum[3]=tree[3]+tree[2]; sum[4]=tree[4]; sum[5]=tree[5]+tree[4]; 分 ...
分类:
其他好文 时间:
2020-02-12 13:15:00
阅读次数:
42
参考 https://www.cnblogs.com/null00/archive/2012/04/22/2464876.html #include <stdio.h> #include <algorithm> #define LEN 10000 using namespace std; struc ...
分类:
其他好文 时间:
2020-02-11 20:48:58
阅读次数:
75