摘要: 学习LCA前提须知 LCA是在一棵树上求两个点的最近公共祖先。两个点共同能到达的点,这样的点我们称它为公共祖先,那么两个点共同能到达的第一个点,这样的点我们称它为最近公共祖先 算法内容 前置技能 您需要去了解 邻接表存图 倍增算法基本原理 高中必修一log函数计算 竞赛需要用到的点 1、LCA常作为 阅读全文
posted @ 2019-09-06 09:50 Nicoppa 阅读(225) 评论(0) 推荐(0) 编辑
摘要: 四子连珠 题目描述 在一个4 4的棋盘上摆放了14颗棋子,其中有7颗白色棋子,7颗黑色棋子,有两个空白地带,任何一颗黑白棋子都可以向上下左右四个方向移动到相邻的空格,这叫行棋一步,黑白双方交替走棋,任意一方可以先走,如果某个时刻使得任意一种颜色的棋子形成四个一线(包括斜线),这样的状态为目标棋局。 阅读全文
posted @ 2019-09-05 16:41 Nicoppa 阅读(217) 评论(0) 推荐(0) 编辑
摘要: 『树状数组』树状数组模板 竞赛需要用到的点 树状数组可以解决大部分基于区间上更新、查询的操作 树状数组能写的线段树都能写,但线段树能写的树状数组不一定能写 代码量小,且常数比线段树小 树状数组是 树 与 二进制 的混合使用 lowbit(x) x&( x) 为何? x = x的二进制数中 0 变 1 阅读全文
posted @ 2019-09-05 10:51 Nicoppa 阅读(1013) 评论(0) 推荐(2) 编辑
摘要: ~~双倍经验,还是蓝题,岂不美哉~~ 题目描述 老师交给小可可一个维护数列的任务,现在小可可希望你来帮他完成。 有长为N的数列,不妨设为$a_1,a_2,…,a_N$ 。有如下三种操作形式: (1)把数列中的一段数全部乘一个值; (2)把数列中的一段数全部加一个值; (3)询问数列中的一段数的和,由 阅读全文
posted @ 2019-09-02 13:02 Nicoppa 阅读(197) 评论(0) 推荐(0) 编辑
摘要: 如题,已知一个数列,你需要进行下面三种操作: 1.将某区间每一个数乘上x 2.将某区间每一个数加上x 3.求出某区间每一个数的和 这道题要同时满足两个操作, 加 和 乘 ,能满足这样操作的就是我们的Lazy(懒)操作了 唯一注意的地方就是,一定要乘法在加法前进行,若加法在乘法前,那么从父亲节点向下传 阅读全文
posted @ 2019-09-01 21:45 Nicoppa 阅读(203) 评论(0) 推荐(0) 编辑
摘要: 给定长度为N的数列A,以及M条指令,每条指令可能是以下两种之一: 1、“1 x y”,查询区间 [x,y] 中的最大连续子段和,即 $max_{x≤l≤r≤y}\Sigma_{i = l}^rA[i]$。 2、“2 x y”,把 A[x] 改成 y。 对于每个查询指令,输出一个整数表示答案。 输入格 阅读全文
posted @ 2019-08-28 14:56 Nicoppa 阅读(140) 评论(0) 推荐(0) 编辑
摘要: 线段树学习前提须知 线段树的基础运用一般用于四个方面 单点修改 单点查询 区间修改 区间查询 且代码易于理解,虽代码量很长 但是并这不妨碍我们学习这个算法 算法内容 基本概念 1、线段树的形式类似于BST~~(二叉搜索树)~~,在一些细节上区分于BST 2、线段树的基本思想: 分治 3、每个节点都是 阅读全文
posted @ 2019-08-26 10:43 Nicoppa 阅读(402) 评论(0) 推荐(0) 编辑