摘要: 基础 基础算法总结 进制转化 N 进制转十进制: long long binary1(string s,int n){//s为输入N进制,n为进制数。 long long p; for(int i=0;i<s.size();i++){ if(s[i]>='A'&&s[i]<='Z') p=p*n+s 阅读全文
posted @ 2025-10-30 21:13 hjm0703 阅读(6) 评论(0) 推荐(1)
摘要: 摘自其他小组的总结 Part 0 引言 dp(Dynamic Programming,动态规划),如何理解? 动态规划是一种通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。 ——OI-Wiki 感性理解,你有一个问题,输入一个数 \(n\),定义 \(f(1) = f(2) = 1\), 阅读全文
posted @ 2025-11-28 19:37 hjm0703 阅读(2) 评论(0) 推荐(0)
摘要: LCA、树上前缀和与差分 LCA LCA 指的是树上最长公共祖先,我们可以现想出一个 预处理 \(\mathcal O (N^2)\), 单次查询 \(\mathcal O(N)\) 的做法: 令 f[i][j] 为 i 的第 j 层祖先是那个节点,因而有转移式: f[i][j]=f[fa[i]][ 阅读全文
posted @ 2025-11-12 09:41 hjm0703 阅读(13) 评论(0) 推荐(0)
摘要: 数列分块 基础 对于 分块模板 ,思路是最直接的一个,将原来的整个序列分成几块。 对于要处理的区间内被完全包含的整块,直接打下懒标记 tag ,然后进行批量处理。 对于左右两边零散的块,暴力处理。 单次修改时间复杂度: \(\mathcal O (\sqrt N)\)。 可食用范围: 对于要写 区修 阅读全文
posted @ 2025-11-08 08:17 hjm0703 阅读(11) 评论(0) 推荐(0)
摘要: 摘自其他小组的总结 双向搜索 介绍 在一部分类似背包但需要用搜索解决的问题中,每每多搜索一层,往往会使时间复杂度 \(\times n\)。但是如果我们将物品分为两半,分别搜索,最终汇总答案,可以直接把时间复杂度套上一个分号,是一个极大的优化。具体怎么做到,我们来看一道例题: 例题 P10484 送 阅读全文
posted @ 2025-10-22 21:31 hjm0703 阅读(7) 评论(0) 推荐(0)
摘要: Trie 定义 字典树,英文名 trie。顾名思义,就是一个像字典一样的树。 引入 这棵树包含了: aa aba ba caaa cab cba ac 这几个单词。 如何维护 定义 son[i][j] 为在 i 号节点,往下边权为 j 的下一个节点。 struct trie { int son[10 阅读全文
posted @ 2025-10-22 21:30 hjm0703 阅读(6) 评论(0) 推荐(0)
摘要: 基础算法进阶 阅读全文
posted @ 2025-10-20 20:25 hjm0703 阅读(7) 评论(0) 推荐(0)
摘要: 包含内容 质数和约数 ,同余 ,矩阵乘法与高斯消元 ,组合计数基础 , 容斥与莫比乌斯函数及概率期望 ,01分数规划与博弈论 阅读全文
posted @ 2025-10-19 20:20 hjm0703 阅读(18) 评论(0) 推荐(1)
摘要: 对于 20251004 CSP-S 模拟的总结 阅读全文
posted @ 2025-10-04 16:55 hjm0703 阅读(19) 评论(0) 推荐(0)
摘要: 对于 [CSP-S]2022年51nod 模拟测试的总结 阅读全文
posted @ 2025-10-03 20:29 hjm0703 阅读(19) 评论(0) 推荐(0)