杭電 5826
阿新 • • 發佈:2019-01-07
題目連結:http://acm.hdu.edu.cn/showproblem.php?pid=5826
題目大意:給出各個小球的初始位置,初速度,方向,保證加速度*速度始終等於c,小球碰撞為完全彈性碰撞,求每次t秒後第k小的初速度的小球速度。
題解:首先分析題意可知初始速度與方向並無關係,完全彈性碰撞即碰撞後兩小球交換速度,如同隔空穿過,由動能定理1/2mv^2-1/2mv0^2=mat, v=sqrt(2*c*t+v0^2)。
#include<iostream> #include<cstdio> #include<algorithm> #include<cmath> using namespace std; int a[100005]; int main() { int T; scanf("%d",&T); while(T--) { int n,c,i; scanf("%d%d",&n,&c); for(i=0;i<n;i++) { scanf("%d",&a[i]); int s1,s2; scanf("%d%d",&s1,&s2); } int m; scanf("%d",&m); sort(a,a+n); double res; for(i=0;i<m;i++) { int t,k; scanf("%d%d",&t,&k); res=sqrt(2.0*c*t+1.0*a[k-1]*a[k-1]); printf("%.3f\n",res); } } return 0; }