不相交就直接搞啊。。没啥技巧,i j如果选了就是(i,j)选了。 ...
分类:
其他好文 时间:
2020-04-11 09:50:05
阅读次数:
93
一、使用场景 频繁修改场景下用于求前缀和 前缀积等(区间和可以通过前缀和计算而来) 查询和修改的时间复杂度都是O(logN) 二、原理 如求前缀和 (树桩数组只是存一段区域的统计值,业务自己决定,如果求前缀和就存这段区域的和;如果求出现次数就存这段区域的数出现的次数) 一个原始数组A 对应一个树桩数 ...
分类:
编程语言 时间:
2020-04-11 00:40:47
阅读次数:
80
1 并查集 (不封装,按秩合并) int ancestor(int x) {return p[x] == x ? x : (p[x] = ancestor(p[x]));} bool test(int x, int y, bool un = false) { if ((x = ancestor(x) ...
分类:
其他好文 时间:
2020-04-09 12:35:57
阅读次数:
59
前置知识 二叉树 正篇 首先先来一个问题:给出一个长度为n的序列和m个操作,操作分别是: 1. 单点修改 2. 单点查询 3. 区间加减 4. 区间查询和 "模板题出处" 最简单的做法就是在数组上暴力for, 这样的话单点修改和查询的时间复杂度是$O(1)$, 区间加减和区间查询的复杂度是$O(n) ...
分类:
其他好文 时间:
2020-04-09 00:48:47
阅读次数:
63
草草整理一下,以后再完善一点 堆排序的复杂度是比较稳定的$O(nlgn)$,并且具有空间原址性。 二叉堆是一个是一个数组,通过类似线段树的方式来表示父结点和子结点 其中1结点代表根,在大根堆中代表最大的数 任何子结点在循环前都可以看作一个平凡堆 大根堆中,每个结点都要比它的子结点大,维护这个性质,只 ...
分类:
编程语言 时间:
2020-04-08 20:53:12
阅读次数:
69
题目链接:https://codeforces.com/contest/961/problem/E 题意: 给你一个长度为 N 的数组 A 问 j < i && a[i] >= j && a[j] >= i 的 (i , j) 有多少对 分析: 权值线段树 其实这是道主席树裸题 , 但我想介绍一种权 ...
分类:
其他好文 时间:
2020-04-07 20:13:17
阅读次数:
72
【题目描述】 现在有一棵二叉树,所有非叶子节点都有两个孩子。在每个叶子节点上有一个权值(有$n$个叶子节点,满足这些权值为$1\dots n$的一个排列)。可以任意交换每个非叶子节点的左右孩子。 要求进行一系列交换,使得最终所有叶子节点的权值按照遍历序写出来,逆序对个数最少。 【输入格式】 第一行n ...
分类:
其他好文 时间:
2020-04-06 23:38:43
阅读次数:
80
第1行有三个整数m, n和q。m和n分别表示画布的宽度和高度,以字符为单位。q表示画图操作的个数。 第2行至第q + 1行,每行是以下两种形式之一: ? 0 x1 y1 x2 y2:表示画线段的操作,(x1, y1)和(x2, y2)分别是线段的两端,满足要么x1 = x2 且y1 ≠ y2,要么 ...
分类:
其他好文 时间:
2020-04-06 11:55:59
阅读次数:
56
URL https://codeforces.com/contest/1326/problem/E 解法 在加入炸弹的过程中答案显然不升,且每次剩下的数都是上一次的子集。 考虑当前的答案是 $x$,已经删除了所有 $ x$ 的数,判断 $x$ 是否被删除。充要条件是: 最右的 $\ge x$ 的数的 ...
分类:
其他好文 时间:
2020-04-05 09:56:23
阅读次数:
57