摸底卷简要题解
题解
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)
注意预先插入极大值和极小值处理边界。

浙公网安备 33010602011771号