摸底卷简要题解

题解

B2123 字符串 p 型编码

思路:遍历字符串,统计每一段连续相同字符的长度,然后输出长度和该字符。注意长度可能超过一位数,直接输出整数即可。

B2143 进制转换

思路:将十进制数 n 转换为 k 进制,用短除法取余,余数大于等于10时用 A~F 表示。最后逆序输出。注意 n=0 时单独输出 0

B3968 [GESP202403 五级] 成绩排序

思路:定义一个结构体存储姓名和成绩。按成绩降序排序,如果成绩相同则按姓名字典序升序。使用 sort 配合自定义比较函数即可。

B2174 完全背包

思路:完全背包问题,每个物品可以无限取。一维 DP,内层循环正序(容量从小到大),状态转移:dp[j] = max(dp[j], dp[j-w[i]]+v[i])。最后输出 dp[V]

P1087 [NOIP 2004 普及组] FBI 树

思路:递归构建后序遍历。对于区间 [l, r],如果全 0 输出 B,全 1 输出 I,否则输出 F。先递归左右子树,再输出当前节点。

P1908 逆序对

思路:归并排序过程中统计逆序对。合并时,若左半部分当前元素大于右半部分当前元素,则左半部分剩余元素都与该右元素构成逆序对,累加 mid - i + 1。结果可能很大,用 long long

P1090 [NOIP 2004 提高组] 合并果子

思路:每次合并最小的两堆,代价最小。用小根堆(优先队列)维护所有堆,每次取出两个最小值,合并后放回,累加代价,直到只剩一堆。

P2441 角色属性树

思路:每个节点有属性值,询问节点 k 的祖先中第一个与 k 互质的节点(不包括自身)。直接向上查找父节点,用 gcd 判断互质,直到根节点。如果找不到输出 -1。修改操作直接更新属性值。

P5076 【深基16.例7】普通二叉树(简化版)

思路:使用 multiset 维护有序集合(允许重复)。操作:

  • 插入 x
  • 查询 x 的排名:distance(s.begin(), s.lower_bound(x))(注:排名定义为比 x 小的数的个数 +1)
  • 查询排名为 k 的数:迭代器前进 k
  • 前驱:*--s.lower_bound(x)
  • 后继:*s.upper_bound(x)
    注意预先插入极大值和极小值处理边界。
posted @ 2026-06-14 11:24  spring_sun  阅读(13)  评论(0)    收藏  举报