专栏文章
题解:P11581 [CCC2020] Surmising a Sprinter's Speed
P11581题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @miqgvkkl
- 此快照首次捕获于
- 2025/12/04 04:35 3 个月前
- 此快照最后确认于
- 2025/12/04 04:35 3 个月前
首先出场的是
code:
CPP#include <bits/stdc++.h>
using namespace std;
struct node // 定义一个结构体node,包含两个成员变量t和p
{
int t, p;
} a[100001];
bool cmp(node x, node y)
{
return x.t < y.t;
}
int n; // 定义一个整数变量n,表示输入的节点数
double ans, v = 0; // 定义两个浮点数变量ans和v,分别用于存储最大速度和当前速度
int main()
{
cin >> n; // 输入节点数
for (int i = 1; i <= n; i++)
cin >> a[i].t >> a[i].p; // 输入每个节点的t和p值
sort(a + 1, a + n + 1, cmp); // 按照t值对节点进行排序
for (int i = 1; i < n; i++)
{
v = abs(a[i].p - a[i + 1].p) / 1.0 / (a[i + 1].t - a[i].t); // 计算相邻节点之间的速度
ans = max(ans, v); // 更新最大速度
}
printf("%.6lf", ans); // 输出最大速度,保留6位小数
return 0;
}
思路:
-
结构体定义:CPP
struct node { int t, p; } a[100001];这里定义了一个结构体node,它包含两个整数成员t和p。数组a用于存储n个node结构体。 -
比较函数:CPP
bool cmp(node x, node y) { return x.t < y.t; }这个比较函数用于排序。它将根据node结构体的t成员对节点进行升序排序。 -
主函数:CPP
int main() { cin >> n; for (int i = 1; i <= n; i++) cin >> a[i].t >> a[i].p; sort(a + 1, a + n + 1, cmp); for (int i = 1; i < n; i++) { v = abs(a[i].p - a[i + 1].p) / 1.0 / (a[i + 1].t - a[i].t); ans = max(ans, v); } printf("%.6lf", ans); return 0; }- 首先读取输入的
n,表示序列的长度。 - 然后读取
n个node结构体的数据,每个结构体包含两个整数t和p。 - 使用
sort函数对结构体数组a进行排序,排序依据是t成员。 - 接着,遍历排序后的数组,计算相邻点之间的斜率。斜率计算公式为:
[
v = \frac{|a[i].p - a[i+1].p|}{a[i+1].t - a[i].t}
]
这里使用
abs函数来确保斜率为正数。 - 使用
max函数更新最大斜率ans。 - 最后我们可以,输出最大斜率
ans,保留六位小数。
- 首先读取输入的
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...