水题;
题意:给你n个球,在一维方向上,每个球给三个量,分别为初速度v,初始坐标x,方向(1||-1),每个球会运动,加速度为a,满足a*v=c,c已知,可能会完全碰撞,问第t秒第k小的速度是多少;
想法:第一眼看到a*v=c,立即想到了高中物理的恒定功率,小车的加速阶段的运动模型,设m=1,则a*m*v=c=p;再用动量定理,p*t=1/2*m*v*v-1/2*m*v0*v0,即可得出;
代码:
#include <bits/stdc++.h> using namespace std; const long long maxn=1000000+88; double a[maxn]; int main() { int t; cin>>t; while(t--) { int n; long long k; scanf("%d%lld",&n,&k); for(int i=0; i<n; i++) { double c,d; scanf("%lf%f%f",&a[i+1],&c,&d); } sort(a+1,a+n+1); int m; scanf("%d",&m); { for(int i=0; i<n; i++) { int dd,cc; scanf("%d%d",&dd,&cc); printf("%.3f\n",sqrt(2*k*dd+a[cc]*a[cc])); } } } return 0; }
时间: 2024-10-11 11:11:43