摘要: 基础 基础算法总结 进制转化 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 阅读(22) 评论(1) 推荐(1)
摘要: 引入 1. 循环重构串 对于一个字符串 S = abcba (下面的代码中字符串为 l ) , 其有以下循环重构串: 1. abcba 2. bcbaa 3. cbaab 4. baabc 5. aabcb 其实就是对于 S 把他连成一个环之后在随机选一个位置断开来。 2. 最小表示法 对于一个字符 阅读全文
posted @ 2026-01-08 13:44 hjm0703 阅读(16) 评论(0) 推荐(0)
摘要: KMP 阅读全文
posted @ 2026-01-07 17:47 hjm0703 阅读(25) 评论(0) 推荐(1)
摘要: 与基础算法中的区别: 这个更加详细 阅读全文
posted @ 2025-12-20 10:33 hjm0703 阅读(22) 评论(0) 推荐(0)
摘要: 与基础算法中的区别: 这个更加详细 阅读全文
posted @ 2025-12-20 10:28 hjm0703 阅读(50) 评论(0) 推荐(0)
摘要: 与基础算法中的区别: 这个更加详细 阅读全文
posted @ 2025-12-20 10:26 hjm0703 阅读(39) 评论(0) 推荐(0)
摘要: 摘自其他小组的总结 Part 0 引言 dp(Dynamic Programming,动态规划),如何理解? 动态规划是一种通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。 ——OI-Wiki 感性理解,你有一个问题,输入一个数 \(n\),定义 \(f(1) = f(2) = 1\), 阅读全文
posted @ 2025-11-28 19:37 hjm0703 阅读(43) 评论(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 阅读(41) 评论(0) 推荐(0)
摘要: 数列分块 基础 对于 分块模板 ,思路是最直接的一个,将原来的整个序列分成几块。 对于要处理的区间内被完全包含的整块,直接打下懒标记 tag ,然后进行批量处理。 对于左右两边零散的块,暴力处理。 单次修改时间复杂度: \(\mathcal O (\sqrt N)\)。 可食用范围: 对于要写 区修 阅读全文
posted @ 2025-11-08 08:17 hjm0703 阅读(36) 评论(0) 推荐(0)
摘要: 摘自其他小组的总结 双向搜索 介绍 在一部分类似背包但需要用搜索解决的问题中,每每多搜索一层,往往会使时间复杂度 \(\times n\)。但是如果我们将物品分为两半,分别搜索,最终汇总答案,可以直接把时间复杂度套上一个分号,是一个极大的优化。具体怎么做到,我们来看一道例题: 例题 P10484 送 阅读全文
posted @ 2025-10-22 21:31 hjm0703 阅读(27) 评论(0) 推荐(0)