杭电 5826

来源:互联网 发布:淘宝领卷app 编辑:程序博客网 时间:2024/06/05 11:45

题目链接: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;}


0 0