摘要: (一) Nim博弈 所谓 Nim 博弈是指,给定一堆石子,第 $i$ 堆物品共有$A_i$,两个玩家轮流行动,每次可以任选一堆,从中取走任意数量的物品,可把一堆取光,但不可不取,两人都采取最优策略,问先手是否必胜,也即第一个行动的称为先手。Nim 博弈不存在的平局,只有先手必胜与先手必败两种情况, 阅读全文
posted @ 2022-09-08 12:58 道长陈牧宇 阅读(66) 评论(0) 推荐(0)
摘要: (一)最近公共祖先 如图所示,树节点 $2$ 与 $7$ 公共祖先即为图中的树节点 $5$,又如图中树节点 $2$ 与 $5$ 公共祖先即为 $5$;以下内容参考了 OI-Wiki,首先大致了解一下公共祖先具有下列性质: 如果 $u$ 不为 $v$ 公共祖先且 $v$ 不为 $u$,那么 $u$ 与 阅读全文
posted @ 2022-09-07 09:34 道长陈牧宇 阅读(137) 评论(0) 推荐(0)
摘要: (一)生成树 阅读之前,需要掌握贪心算法、并查集、图数据结构存储的前置知识,否则读起来会很吃力。通俗来说,生成树是指从一个图中提取一个树结构,最小生成树是指边权总和最小的生成树。本节我们需要讨论最小生成树、次小生成树等变体问题,当然有些时候我们要算的也有可能是最大生成树生成树,相关算法的综述参考 O 阅读全文
posted @ 2022-09-06 23:59 道长陈牧宇 阅读(52) 评论(0) 推荐(0)
摘要: (一) 素数判定与筛选 给定一个正整数 $N$,如果存在一个数 $T$,$T$ 满足 $(2\leq T \leq N -1)$ 则称 $N$ 是一个合数,如果不存在这样这样的因数 $T$,则称$N$ 质数。简单来说,一个数$N$ 如何仅能被 $1$ 与 $N$ 本身整除,则称这个数字是质数,或称素 阅读全文
posted @ 2022-09-02 18:25 道长陈牧宇 阅读(307) 评论(0) 推荐(0)
摘要: (一)哈希表简述 Waiting... (二)使用哈希表优化复杂度 (2.1)两数之和 Waiting... (2.2)子数组异或和 枚举数组的左端点以及数组长度, #include <bits/stdc++.h> #include <algorithm> using namespace std; 阅读全文
posted @ 2022-08-14 15:37 道长陈牧宇 阅读(31) 评论(0) 推荐(0)
摘要: (一)如何优化暴力算法 Waiting... (二)KMP模板 KMP 算法的精髓在于 $next$ 数组,$next[i]=j$ 代表 $p[1,j]=p[i-j+1,i]$,$next[i]$ 数值意义代表 $p[1,i]$ 所有前缀与后缀的最长公共部分,我们约定本文提到的前缀与后缀均为不包含原 阅读全文
posted @ 2022-08-11 23:56 道长陈牧宇 阅读(187) 评论(0) 推荐(0)
摘要: 双指针算法的几个重要用途 阅读全文
posted @ 2022-08-09 09:43 道长陈牧宇 阅读(39) 评论(0) 推荐(0)
摘要: Trie模板 Trie 是一种用于实现字典序快速检索的多叉树结构,Trie 每个节点都有若干的字符指针,若在扫扫描字符串时扫到字符 $c$,则沿着当前节点 $c$ 字符指针走向该指针指向的节点。初始化阶段,Trie近包含一个空节点,其所有字符指针均为空。 通过数组模拟字典树,分配树节点的方式与数组模 阅读全文
posted @ 2022-08-07 19:03 道长陈牧宇 阅读(44) 评论(1) 推荐(0)
摘要: 几个经典的区间查询方法 阅读全文
posted @ 2022-07-18 13:21 道长陈牧宇 阅读(94) 评论(0) 推荐(0)
摘要: 使用数组模拟常用的数据结构 我们可以使用数组作为下列抽象容器的存储结构 链表 栈 队列 堆 哈希表 并查集 阅读全文
posted @ 2022-07-15 12:20 道长陈牧宇 阅读(26) 评论(0) 推荐(0)