文章
25
粉丝
165
获赞
52
访问
30.9k
方法思路
计算总步行时间:首先计算所有相邻城市之间的步行时间总和。
找到最大连续k段步行时间和:使用滑动窗口找到连续k个步行时间段的最大和。
计算最短时间:用总步行时间减去最大连续k段步行时间和,再加上飞行时间h。
解决代码
#include <stdio.h>
#include <stdlib.h>
int main() {
int n, k, h;
scanf("%d %d %d", &n, &k, &h);
if (n == 1) {
printf("0\n");
return 0;
}
int* a = (int*)malloc((n-1) * sizeof(int));
for (int i = 0; i < n-1; i++) {
scanf("%d", &a[i]);
}
int sum_total = 0;
for (int i = 0; i < n-1; i++) {
sum_total += a[i];
}
if (k == 0) {
printf("%d\n", sum_total);
return 0;
}
// 找连续k个元素的最大和
int max_k_sum = 0;
int current_sum = 0;
for (int i = 0; i < k; i++) {
current_sum += a[i];
}
max_k_sum = current_sum;
for (int i = k; i < n-1; i++) {
current_sum += a[i] - a[i - k];
if (current_sum > max_k_sum) {
max_k_sum = current_sum;
}...
登录后发布评论
暂无评论,来抢沙发