hdu_5826_physics(物理题)

题目链接:hdu_5826_physics

题意:

给你一些点的速度和初始位置,还有方向,这些速度和加速度满足v*a=c,然后又q个询问,问第t秒第K小的速度是多少

题解:

将物理公式转换为v与t的关系,然后将初始的v排序后直接输出就行

公式为v=sqrt(2*c*t+v02)

 1 #include <cstdio>
 2 #include <algorithm>
 3 #include <cmath>
 4 using namespace std;
 5 const int N = 1e5 +5;
 6 double v[N];
 7 int main()
 8 {
 9     int t;
10     scanf("%d", &t);
11     while (t--)
12     {
13         int n, c, x, d, q;
14         scanf("%d%d", &n, &c);
15         for (int i = 1; i <= n; i++) scanf("%lf%d%d", &v[i], &x, &d);
16         sort(v + 1, v + 1 + n);
17         scanf("%d", &q);
18         for (int i = 1; i <= q; i++)
19         {
20             scanf("%d%d", &x, &d);
21             printf("%.3f
", sqrt(2.0 * c * x + v[d] * v[d]));
22         }
23     }
24     return 0;
25 }
View Code
原文地址:https://www.cnblogs.com/bin-gege/p/5762545.html