POJ3684——Physics Experiment

来源:互联网 发布:java多线程上传图片 编辑:程序博客网 时间:2024/06/05 10:02

题目链接:http://poj.org/problem?id=3684

Physics Experiment

解题思路:跟蚂蚁那个题比较类似,先单独计算每个点的位置,再排序。

#include<iostream>#include<cstdio>#include<cmath>#include<algorithm>using namespace std;double h,r,t;double fun(int t){    if(t<=0)        return h;    double tx=sqrt(h/5.0);    int xx=t/tx;    double tt;    if(xx&1)        tt=xx*tx+tx-t;//如果是奇数,应该是tx-(t-xx*tx),即xx*tx+tx-t,根据物理运动公式得来的    else        tt=t-xx*tx;//如果是偶数,多出来的时间按重新开始计算    return h-5.0*tt*tt;//求出距离地面的高度}int main(){    int T;    double ans[110];    scanf("%d",&T);    while(T--)    {        int i,n;        scanf("%d%lf%lf%lf",&n,&h,&r,&t);        for(i=0;i<n;i++)            ans[i]=fun(t-i);//跟蚂蚁那个题比较类似,先单独计算每个点的位置,再排序        sort(ans,ans+n);        for(i=0;i<n-1;i++)            printf("%.2lf ",ans[i]+2*r*i/100.0);        printf("%.2lf\n",ans[n-1]+2*r*i/100.0);    }    return 0;}


0 0
原创粉丝点击