- 博客(14)
- 收藏
- 关注
原创 洛谷 B3870:[GESP202309 四级] 变长编码 ← 位运算
例如,987654321012345678 的二进制为 \((0001101 1011010 0110110 1001011 1110100 0100110 1001000 0010110 1001110)_{2}\),于是它的变长编码为(十六进制表示) CE 96 C8 A6 F4 CB B6 DA 0D,共 9 个字节。正数的符号位为 0,正数的原码、反码和补码,完全相同。负数的符号位为 1,负数的反码为其原码各位取反(符号位不变),负数的补码为其反码加 1(补码运算时,溢出位丢弃,符号位不变)。
2025-08-02 05:39:10
481
原创 洛谷 B3927:[GESP202312 四级] 小杨的字典 ← STL map
该题目要求实现一个翻译程序,将A语言文章中的单词根据字典翻译成B语言。程序需要处理包含标点符号的输入文章,逐个识别单词进行翻译:若字典中存在则替换为对应翻译,否则替换为"UNK"。算法使用map存储字典,遍历输入字符串分离单词和标点符号,最后处理可能残留的末尾单词。时间复杂度主要由map查找操作决定,为O(nlogn)。示例输入输出展示了标点符号处理、单词翻译和未收录词替换等功能。
2025-08-02 05:35:09
333
原创 洛谷 P1095 [NOIP2007 普及组 T4]:Hanoi 双塔问题 ← 递归+高精度算法
给定 A,B,C 三根足够长的细柱,在 A 柱上放有 2n 个中间有空的圆盘,共有 n 个不同的尺寸,每个尺寸都有两个相同的圆盘,注意这两个圆盘是不加区分的(下图为 n=3 的情形)。● 设 f[i] 为将 2*i 个圆盘从 A 柱移动到 C 柱的移动次数。(1)将 2*(i-1) 个圆盘从 A 柱移动到 B 柱,需要移动 f[i-1] 次。(3)将 2*(i-1) 个圆盘从 B 柱移动到 C 柱,需要移动 f[i-1] 次。(2)将 2 个圆盘从 A 柱移动到 C 柱,需要移动 2 次。
2025-08-01 22:09:23
357
原创 洛谷 P1217:[USACO1.5] 回文质数 Prime Palindromes
● 在算法竞赛或编程问题中,若需处理回文质数,一种方法是直接将数的范围限制在 ≤7 位,避免无效计算。欧拉筛法(又称线性筛法)是一种高效筛选素数的算法,其核心特点是保证每个合数仅被其最小质因子筛除一次,从而实现 O(n) 的时间复杂度。好在回文质数问题的数据规模限制在 ≤7 位,故可据此进行优化,避免 TLE。因为 151 既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151 是回文质数。● 如下判断素数的经典代码,当 n 较大时(如 1e7),会非常耗时,最终导致 TLE。
2025-07-31 22:43:37
377
原创 洛谷 P1307:[NOIP 2011 普及组] 数字反转 ← STL stack
给定一个整数 N,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例 2)。STL 中的 stack(栈)是 C++ 标准模板库中的一个容器适配器,它遵循后进先出(LIFO)原则。一个整数,表示反转后的新数。
2025-07-31 22:29:02
193
原创 洛谷 P3397:地毯 ← “二维前缀和 + 二维差分”模板题
二维“区间和”计算过程:( sum[x2][y2] - sum[x2][y1-1] ) - ( sum[x1-1][y2] - sum[x1-1][y1-1] ) = sum[x2][y2] - sum[x2][y1-1] - sum[x1-1][y2] + sum[x1-1][y1-1] (y2≥y1,x2≥x1)二维“前缀和数组”预处理过程:sum[i][j]=sum[i-1][j]+sum[i][j-1]-sum[i-1][j-1]+a[i][j]其中,i∈[1,n]。
2025-07-31 22:22:50
223
原创 洛谷 B3612:求区间和 ← 一维前缀和模板题
给定 n 个正整数组成的数列 a1,a2,…,an 和 m 个区间 [li,ri],分别求这 m 个区间的区间和。样例解释:第 1 到第 4 个数加起来和为 10。第 2 个数到第 3 个数加起来和为 5。接下来 m 行,每行为两个正整数 li,ri,满足 1≤li≤ri≤n。对于 100% 的数据:1≤n, m≤10^5,1≤ai≤10^4。第二行,为 n 个正整数 a1,a2,…对于 50% 的数据:n, m≤1000;第三行,为一个正整数 m。第一行,为一个正整数 n。
2025-07-31 22:15:28
130
原创 洛谷 P2004:领地选择 ← 二维前缀和
【摘要】题目要求在一个N×M的地图中,找出边长为C的正方形区域,使其土地价值总和最大。使用二维前缀和优化计算,预处理每个位置的前缀和数组s[i][j]。通过公式s[i+c-1][j+c-1]-s[i-1][j+c-1]-s[i+c-1][j-1]+s[i-1][j-1]快速计算任意C×C区域的和,遍历所有可能的左上角坐标(i,j),记录最大值对应的位置。时间复杂度为O(NM),适用于N,M≤1000的数据规模。最终输出使区域和最大的左上角坐标(x,y)。
2025-07-31 18:24:59
396
原创 洛谷 P3368:【模板】树状数组 2 ← 差分
本文介绍了如何利用树状数组和差分思想高效解决区间更新、单点查询问题。通过将原数组转换为差分数组,将区间更新操作转化为两次单点更新(D[x]+k和D[y+1]-k),单点查询转化为对差分数组的前缀和查询。算法核心在于构建差分数组的树状数组,实现O(logN)时间复杂度的区间修改和单点查询。文中给出了完整的C++代码实现,并通过示例演示了该方法在洛谷P3368题中的应用,适用于大规模数据(N,M≤500,000)的高效处理。
2025-07-31 17:02:52
703
1
原创 洛谷 P1115:最大子段和 ← 动态规划+优先队列
● 子序列问题是指在一个序列(如数组、字符串等)中,寻找满足特定条件的子序列的算法问题。子序列指的是从原序列中依序选取的元素组成的新序列,但选取的元素不一定连续。● 子序列问题求解的核心思路:通过分解子问题,利用动态规划或特殊数据结构进行优化。对于 100% 的数据,保证1≤n≤2×10^5,-10^4≤ai≤10^4。给出一个长度为 n 的序列 a,选出其中连续且非空的一段使得这段和最大。状态定义:dp[i] 表示以第 i 个元素结尾的连续子数组的最大和。第一行是一个整数,表示序列的长度 n。
2025-07-31 12:43:43
173
原创 洛谷 P11230:[CSP-J 2024 T4] 接龙 ← 图论+动态规划
(2)接龙的人选择一个长度在 [2,k] 的 的连续子序列 A 作为这一轮的接龙序列,其中 k 是给定的常数。为了强调合作,小 J 给了 n 个参与游戏的人 q 个任务,第 j 个任务需要这 n 个人进行一次游戏,在这次游戏里进行恰好 轮接龙,且最后一轮的接龙序列的最后一个元素恰好为。对每个查询 (x,y),检查 st[x][y] 是否为非 -1 值,若不等于 -1,输出 1(表示任务可以完成)。st[M][N]:状态矩阵,st[i][j] 记录在第 i 步能否到达节点 j,初始值为 -1。
2025-07-30 23:49:04
922
原创 洛谷 P11229:[CSP-J 2024 T3] 小木棍 ← 贪心算法
(4)若 r=3,即 n=7k+3,则拼出的最小数为(k+1 位,5+6+6+7*(k-2)=7k+3 个小木棒)。易见,在 0~9 中,拼出 8 所需的小木棍个数最多,为 7 个。(2)若 r=1,即 n=7k+1,则拼出的最小数为(k+1 位,2+6+7*(k-1)=7k+1 个小木棒)。(5)若 r=4,即 n=7k+4,则拼出的最小数为(k+1 位,5+6+7*(k-1)=7k+4 个小木棒)。(7)若 r=6,即 n=7k+6,则拼出的最小数为(k+1 位,6+7*k=7k+6 个小木棒)。
2025-07-30 23:38:28
727
原创 洛谷 P11227:[CSP-J 2024 T1] 扑克牌 ← STL map / STL set
为了方便你的输入,我们使用字符 D 代表方片,字符 C 代表草花,字符 H 代表红桃,字符 S 代表黑桃,这样每张牌可以通过一个长度为 2 的字符串表示,其中第一个字符表示这张牌的花色,第二个字符表示这张牌的点数,例如 CA 表示草花 A,ST 表示黑桃 T(黑桃 10)。对于所有测试数据,保证:1≤n≤52,输入的 n 个字符串每个都代表一张合法的扑克牌,即字符串长度为 2,且第一个字符为 DCHS 中的某个字符,第二个字符为 A23456789TJQK 中的某个字符。【算法代码一:STL map】
2025-07-30 23:22:18
481
原创 洛谷 P11228:[CSP-J 2024 T2] 地图探险 ← 搜索算法
具体地说,它判断 (x′,y′) 是否满足 1≤x′≤n,1≤y′≤m,且 (x′,y′) 位置上是空地。则它的方向上的下一步的位置 (x′,y′) 定义如下:若 d=0,则令 (x′,y′)=(x,y+1),若 d=1,则令 (x′,y′)=(x+1,y),若 d=2,则令 (x′,y′)=(x,y−1),若 d=3,则令 (x′,y′)=(x−1,y)。对于所有测试数据,保证:1≤T≤5,1≤n, m≤10^3,1≤k≤10^6,1≤x0≤n,1≤y0≤m,0≤d0≤3,且机器人的起始位置为空地。
2025-07-30 22:51:24
755
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人