摘要: 倍增LCA 我们的倍增LCA分为两步,我们预处理 \(f[i][j]\) 为 \(i\) 向上跳 \(2^j\) 达到的点,然后通过BFS,先将两点跳到同一个深度,然后判断 \(u\) 是否等于 \(v\) 再将它们同时跳 \(2^k\) 如果 \(f[u][k]\) 不等于 \(f[v][k]\) 阅读全文
posted @ 2026-08-03 10:35 jianghaochen 阅读(2) 评论(0) 推荐(0)
摘要: 前言:本人赛时 \(400\) 分,觉得本次基础赛对比以往难度有所下降 传送门 放一下代码,四道题难度都很简单 T1 #include <bits/stdc++.h> using namespace std; int main() { string s; cin >> s; int st = 0; 阅读全文
posted @ 2026-08-02 20:14 jianghaochen 阅读(5) 评论(0) 推荐(0)
摘要: P3374 题目传送门 我们可以使用树状数组进行单点修改和区间查询,只是一道模版,不多说了 #include <bits/stdc++.h> using namespace std; const int N = 5e5 + 10; int c[N]; int n , m; int lowbit(in 阅读全文
posted @ 2026-08-02 15:28 jianghaochen 阅读(7) 评论(0) 推荐(0)
摘要: 我们可以使用时空倒流法 不难可以想到可以整体二分 但是还需要用可撤销并查集维护,因为显然会成一个宽度优先搜索的形式,每次处理完后回收空间,时间复杂度就为线性对数,这里不难想到 阅读全文
posted @ 2026-03-04 19:12 jianghaochen 阅读(8) 评论(0) 推荐(0)
摘要: 前面的唐性质自己想 阅读题意可得,格子的编号为 \(1,2,3,…,n\) ,数字的集合为 \({1,2,…,n-1}\) 在合法方案中,有 \(k\) 个格子填了数,所以有 \(k\) 个数字被使用,那么一共有 \((n-1)-k\) 个数字没有用 把 \(k\) 个数和 \(k\) 个字符一一对 阅读全文
posted @ 2026-02-27 15:44 jianghaochen 阅读(16) 评论(0) 推荐(0)
摘要: 根据题意可得,高度为 \(n\) 的建筑是永远不会被挡住的,那么我们可以令它为峰值,在它左边的被左边的挡,在右边的被右边的挡 我们一共可以分出 \(A-B-1\) 个块,每个块有由这个块最高的建筑和其他所有被它挡住的建筑,高 \(n\) 的建筑单独一块 其实不难发现,这就是一个斯特林数 对于每个块的 阅读全文
posted @ 2026-02-27 15:19 jianghaochen 阅读(26) 评论(0) 推荐(0)
摘要: AGC001A 这题何意味,模拟即可 AGC001B 我们首先可以看出,图中的所有三角形都为等边三角形,所以我们就可以快乐求路径和了, \(3[(n-x)+x-3[gcd(n,x)]\) ,简化可得为 \(3n-3(gcd(n,x))=3(n-gcd(n,x))\) AGC001C 不是这难吗?还是 阅读全文
posted @ 2026-02-25 16:26 jianghaochen 阅读(11) 评论(0) 推荐(0)
摘要: 实时更新 AGC001 阅读全文
posted @ 2026-02-25 14:31 jianghaochen 阅读(10) 评论(0) 推荐(0)
摘要: 论如何用线段树维护最近公共祖先第一部分:线段树的深度解析1. 引言:为何需要线段树?在算法与数据结构的世界中,我们常常面临一类核心问题:如何高效地对一个线性数据序列(通常是数组)进行动态的“区间查询”与“点/区间更新”。考虑以下经典场景:场景一(区间最值查询):给定一个记录每日气温的数组,系统需要频 阅读全文
posted @ 2026-02-25 14:28 jianghaochen 阅读(30) 评论(1) 推荐(0)
摘要: 这道题在十年之后才知道原来是教练出的,那包来写一篇题解 不难想到可以离线然后启发式搜索,可以使用二位偏序做出,加上线段树维护即可通过 阅读全文
posted @ 2026-02-25 09:49 jianghaochen 阅读(8) 评论(0) 推荐(0)