今天是PTA题库解法讲解的第八天,今天我们要讲解天梯赛的赛场安排,题目如下:
解题思路:
这个问题的关键在于高效地为参赛学校的队员分配赛场,同时满足给定的条件。我们可以通过以下步骤解决这个问题:
下面是相应的C语言实现:
#include <stdio.h>
#define MAX_SCHOOL 5000
typedef struct {
char name[7]; // 学校缩写,最多6个字符
int num; // 学校参赛人数
int supervisor; // 需要联系的监考人数
} School;
int main() {
int N, C;
scanf("%d %d", &N, &C);
School schools[MAX_SCHOOL];
int totalRooms = 0;
for (int i = 0; i < N; i++) {
scanf("%s %d", schools[i].name, &schools[i].num);
int neededRooms = (schools[i].num + C - 1) / C; // 计算每所学校需要的赛场数,向上取整
schools[i].supervisor = neededRooms; // 存储每所学校需要联系的监考人数
totalRooms += neededRooms; // 累加总赛场数
}
for (int i = 0; i < N; i++) {
printf("%s %d\n", schools[i].name, schools[i].supervisor);
}
printf("%d\n", totalRooms); // 输出总赛场数
return 0;
}
这段代码首先读取学校数量N和每个赛场的规定容量C,然后对每所学校进行处理,计算每所学校需要的赛场数,并累加到总赛场数中。最后,输出每所学校需要联系的监考人数和总赛场数。
本题部分没有通过,小伙伴们可以在评论区讨论,来个最优解哦~