题意: 链接:https://ac.nowcoder.com/acm/contest/5158/I 思路:树状数组主要针对的是区间(而且是一条线段的)求和问题,所以需要利用dfs序和数组 in [ ], out [ ] (前缀和原理),利用dfs进行搜索,每个点依次被访问的顺序就是每个点的dfs序, ...
分类:
编程语言 时间:
2020-10-05 21:24:06
阅读次数:
36
树状数组小结 背景 树状数组本质是区间前缀和,但是众所周知,暴力和前缀和各有优缺点…… (图片中本来是线段树的,但是其实差不多吧) 所以诞生了树状数组这个东西。 树状数组分为以下几步 声明部分 #include <iostream> #include <algorithm> #include <cs ...
分类:
编程语言 时间:
2020-09-21 11:52:34
阅读次数:
54
importjava.util.Scanner;/***k为尾部的0的个数*C[i]=A[i-2^k+1]+A[i-2^k+2]+...+A[i]*/publicclassTreeArray{privateintsize;privateintarr[];privateintc[];publicTreeArray(intsize){this.size=size;this.arr=newint[siz
分类:
编程语言 时间:
2020-09-18 03:56:02
阅读次数:
37
题目链接:https://vjudge.net/problem/POJ-2182 题意:n头牛,身高为1到n的一个排列。已知每头牛前面比它矮的个数,求每头牛的身高 这题和习题里的poj2828基本一样。倒着考虑,如果最后一头牛前面有k1个比它矮,那么它的身高就是k1+1。倒数第二头如果有k2个比它矮 ...
分类:
其他好文 时间:
2020-09-17 23:12:01
阅读次数:
30
题目链接:#6277. 数列分块入门 1 题目大意 给出一个长为 \(n\) 的数列,以及 \(n\) 个操作,操作涉及区间加法,单点查值。 solution 我们可以用树状数组和线段树来过掉他, 但是这是一道分块的题,那我们就要用分块来 \(A\) 掉它 查询操作: 我们可以直接记录一下块的操作, ...
分类:
其他好文 时间:
2020-09-17 20:04:26
阅读次数:
37
#include <iostream> #include <cstdio> #include <cstring> using namespace std; const int N = 2000010; typedef long long LL; int n; //t[i]表示树状数组i结点覆盖的范围 ...
分类:
编程语言 时间:
2020-09-11 14:22:54
阅读次数:
34
给定长度为 $n$ 的数列,每个数都在 $[1,n]$ 间,回答 $m$ 个询问,每次给定一个区间 $[l,r]$,问其中有多少对数间存在倍数关系。 ...
分类:
编程语言 时间:
2020-09-11 14:19:51
阅读次数:
42
一、什么是Dockerfile Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明,每条指令构建一层。 二、Dockerfile文件内容 Dockerfifile文件内容一般分为4部分: 基础镜像信息 维护者信息 镜像操作指令 容器启动时执行的指令 三、 ...
分类:
其他好文 时间:
2020-09-10 23:01:12
阅读次数:
40
闲的没事翻新题,突然想起笛卡尔树还没学,于是写了写笛卡尔树的模板题。 P5854 【模板】笛卡尔树 题意 给一个排列p1pn,i号点权值为pi,要求建一棵以编号为关键字的二叉搜索树(中序序列为1n),且以权值为关键字的小根堆。 n ? 1e7 思路分析 难度在于O(n)建树。但既然编号是连续的,那么 ...
分类:
其他好文 时间:
2020-09-08 20:42:17
阅读次数:
37
序列 题目描述 给定两个长度为n的序列 \(a, b\) 。你需要选择一个区间$[l,r]$,使得 $a_l+…+a_r\geqslant 0$且 \(b_l+…+b_r\geqslant 0\)。最大化你选择的区间长度。 输入格式 第一行一个整数 \(n\),第二行 \(n\) 个整数 \(a_1 ...
分类:
编程语言 时间:
2020-08-17 17:25:48
阅读次数:
52