摘要: 第一板块——基本算法 搜索 双向广搜 常见用法 OI-Wiki 双向搜索 补充 双向广搜判无解的效率一般比不上普通广搜 题目 P1379 八数码难题 简要思路:把 \(string\) 的状态存到 \(map\) 中,再把每个位置的可拓展的状态代表出来,跑双向 \(bfs\) 即可 第二板块——数学 阅读全文
posted @ 2025-07-19 09:18 huangyuze 阅读(38) 评论(0) 推荐(0)
摘要: 题目 P9196 [JOI Open 2016] 销售基因链 / Selling RNA Strands 前后缀信息考虑放到字典树上去,则建出两棵字典树后,找到前缀字典树的一个节点的子树内的结尾节点与后缀字典树的一个节点的子树内的结尾节点的交集,显然可以转化为两段连续的 dfn 值,于是离线二维数点 阅读全文
posted @ 2025-11-24 16:49 huangyuze 阅读(0) 评论(0) 推荐(0)
摘要: 普通字典树 没什么好讲的 0-1 Trie 非常有用,经常用于异或相关的题目 求一个集合中两两异或的最大值 枚举集合中的一个数 \(x\),按位贪心,如果这一位有一个与 \(x\) 不同的,那么字典树上走这一边,否则走 \(x\) 的这一边。具体见代码 int solve(int x){ int p 阅读全文
posted @ 2025-11-13 21:08 huangyuze 阅读(3) 评论(0) 推荐(0)
摘要: 简介 构建 类似重链剖分,把原树分为若干条实链,用若干条虚边连接,则我们可以发现所有实链的深度单调递增,考虑每条实链建以深度为键值的 Splay,然后对于虚边实行认父不认子,也就是每颗 Splay 的根有父亲,但它的父亲的儿子没有它。 三个常用函数 getlr(u) 判断 \(u\) 是 \(u\) 阅读全文
posted @ 2025-11-09 21:37 huangyuze 阅读(3) 评论(0) 推荐(0)
摘要: 定义:\(u\) 的排名为中序遍历后 \(u\) 在第几个 求 rank,kth,pre,nxt 有统一写法 int kth(int rk){ int u = head; while (u){ if (siz[ls[u]]+1 == rk) return u; if (siz[ls[u]]+1 < 阅读全文
posted @ 2025-11-07 19:50 huangyuze 阅读(2) 评论(0) 推荐(0)
摘要: 11.4 学了吉司机线段树,FHQ Treap,文艺平衡树,文本编辑器 11.5 打模拟赛,写了前三题 学了可持久化 FHQ-Treap S 组一分没挂,\(209pts\) 11.6 打模拟赛,写了前三题 11.7 学了 Splay,复习了一点长链剖分 11.8 打模拟赛,写了前三题 晚上打 ab 阅读全文
posted @ 2025-11-04 09:28 huangyuze 阅读(3) 评论(0) 推荐(0)
摘要: 所有内容均可见 OI-Wiki 莫队,下面是一些稍带思维的题目 普通莫队 P4462 [CQOI2018] 异或序列 考虑把信息转成前缀的异或形式,则求 \(s_r \oplus s_{l-1} = k\) 的个数,考虑莫队中增加一个数,那么分两种情况 增加最左边的数 \(p\),那么对答案的贡献为 阅读全文
posted @ 2025-10-24 21:45 huangyuze 阅读(5) 评论(0) 推荐(0)
摘要: P6005 [USACO20JAN] Time is Mooney G dj 跑最长路是错的,可以以经过边数为阶段 \(O(nm)\) dp P6149 [USACO20FEB] Triangles S 枚举每个点,四个象限分讨,前缀和+二分做完 P6278 [USACO20OPEN] Haircu 阅读全文
posted @ 2025-10-17 20:30 huangyuze 阅读(7) 评论(0) 推荐(0)
摘要: 具体证明详见算法导论 图的表示 图 \(G = (V,E)\),其中 \(V\) 为点集,\(E\) 为边集 邻接矩阵:顾名思义为矩阵,\(a_{i,j}\) 表示边 \((i,j)\) 的信息。优点是可以进行矩阵乘法,可以方便的判断 \((u,v) \in E\);缺点是空间复杂度为 \(O(V^ 阅读全文
posted @ 2025-10-02 10:45 huangyuze 阅读(11) 评论(0) 推荐(0)
摘要: ABC407 F - Sums of Sliding Window Maximum 如果直接计算,即使使用单调队列也需 \(O(n^2)\),无法通过,由于 \(ans_k\) 的值是累加起来的和,因此考虑每个 \(A_i\) 的贡献。 容易发现,记 \(lt[i]\) 表示 \(i\) 前面第一个 阅读全文
posted @ 2025-07-19 09:30 huangyuze 阅读(7) 评论(0) 推荐(0)
摘要: 首先,可以确定,如果整个序列有两个以上众数,那么答案为 \(n\),故考虑只有一个众数 \(x\) 的情况。 接下来还是不好做,还是要枚举每个区间,此时我们可以尝试缩小区间范围,排除无效区间。 我们假设最终答案的区间为 \([L,R]\),那么我们尝试把这个区间的众数 \(y,z\) (或更多) 与 阅读全文
posted @ 2025-07-19 09:27 huangyuze 阅读(10) 评论(0) 推荐(0)