【正经题解】Cow Jog
2024-03-18 14:05:52
发布于:浙江
3阅读
0回复
0点赞
这段代码首先读取输入的奶牛数量 和跑步时间 。然后计算每头奶牛在跑步结束时的位置,并使用贪心算法找到最小的赛道 数,最后输出结果。这段代码的核心是使用贪心算法维护一个数组 ,记录每个赛道上最右侧的奶牛的位置,以确保不会有奶牛发生冲突。
#include<iostream>
#include<algorithm>
using namespace std;
long long a[100010], c[100010], top, n, t;
int main() {
long long p, v;
scanf("%lld%lld", &n, &t);
// 计算奶牛们在跑步过程中的最终位置
for (int i = 1; i <= n; i++) {
scanf("%lld%lld", &p, &v);
a[i] = p + v * t;
}
// 使用贪心算法找到最小的赛道数
for (int i = n; i >= 1; i--) {
if (!top || a[i] >= c[top])
c[++top] = a[i];
else {
int t = upper_bound(c + 1, c + top + 1, a[i]) - c;
c[t] = a[i];
}
}
printf("%lld\n", top);
return 0;
}
这里空空如也
有帮助,赞一个