本文共 1079 字,大约阅读时间需要 3 分钟。
T1: Sort
问题描述
小x和小y是好朋友。小y的成绩很差,以至于GPA在系内倒数。为了帮助小y提高成绩,小x提出了一个要求:新学期的GPA要超过系内排名第K位的同学。我们需要找出排名第K位同学的GPA。
输入格式
- 第一行:2个整数N和K。
- 接下来的N行,每行包含1个非负实数和1个整数,分别表示GPT和已修学分数。
输出格式
- 1行,1个实数,表示排名第K位同学的GPA,保留2位小数。
解题思路
数据处理:将每个同学的GPT和学分存储起来,计算GPA(GPT除以学分)。 排序:根据GPA对同学进行排序。 找到排名:取排序后的第K位同学的GPA。 T2: Sum
问题描述
小x有N堆糖果,每堆糖果数量已知。然后有M次询问,每次询问给出区间[L, R],要求计算从第L堆到第R堆的糖果总数。
输入格式
- 第一行:2个整数N和M。
- 第二行:N个整数,表示每堆糖果的数量。
- 接下来的M行,每行包含2个整数L和R。
输出格式
解题思路
预处理前缀和数组:前缀和数组可以在O(1)时间内回答区间和问题。 计算前缀和:从第1堆到第i堆的糖果总数存储在前缀和数组中。 处理每个询问:对于每个询问,计算区间和为前缀和[R] - 前缀和[L-1]。 T3: Count
问题描述
小y需要从起点走到终点,每一步只能向右或向下移动。每个格子有积分,总积分为P。求满足总积分恰好为P的路径数量。
输入格式
- 第一行:3个整数N、M和P。
- 接下来的N行,每行M个整数,表示每个格子的积分。
输出格式
- 1行,1个整数,表示满足条件的路径数量,结果取模1e9+7。
解题思路
动态规划:使用三维数组f[i][j][k]表示到达第i行第j列时,积分为k的路径数量。 状态转移:每个格子的状态可以从上方或左方转移而来。 防溢出:每次更新时取模,避免整数溢出。 T4: Ranking
问题描述
小x需要对小姊妹们的名字进行排序,规则是名字的开头字母序列必须连续相同。计算满足条件的排列方式数。
输入格式
- 第一行:一个整数n。
- 接下来的n行,每行一个字符串,表示小姊妹的名字。
输出格式
- 1行,1个整数,表示合法的排列方式数,结果取模1e9+7。
解题思路
字符串处理:提取每个名字的前缀,并记录这些前缀的位置。 动态规划:考虑每个可能的前缀长度,计算有多少种排列方式。 组合数学:使用阶乘来处理排列组合,避免重复计数。 通过以上分析,可以清晰地看到每个问题的解决思路和方法。接下来,我将根据这些思路编写详细的代码,确保每个问题都能正确解决。
转载地址:http://gdim.baihongyu.com/