首页 > 其他 > 详细

hdu5826

时间:2016-08-11 20:58:54      阅读:215      评论:0      收藏:0      [点我收藏+]

题意:

在一条无限长水平直轨道上有n个相同的球,给出每个球的初速度、起始位置、方向.
给出若干询问,每次输出 t 秒时第 k 小的速度是多少.
对任意球的任一时刻而言,速度与加速度同方向,且它们的乘积为定值C.

题解:

撞击对于速度没有影响,则对于相对大小也没有影响

a*v=c;

dv/dt=a;

v*dv=c*dt;

两边求定积分即可

#include <iostream>
#include <cmath>
#include <algorithm>
#include <cstdio>
using namespace std;
typedef long long ll;
const int maxn=1e5+10;
const double q = (1 + sqrt(5.0)) / 2.0;   // 黄金分割数
int t,n;
ll c,a[maxn];
int main ()
{
    cin>>t;
    while (t--)
    {
      scanf("%d%lld",&n,&c);
      ll x1,x2,x3;
      for(int i=1;i<=n;i++){
            scanf("%lld%lld%lld",&x1,&x2,&x3);
            a[i]=x1;
      }
      sort(a+1,a+1+n);
      int q;
      scanf("%d",&q);
      while(q--){
            int t,k;
            scanf("%d%d",&t,&k);
            double v=2*t*c+a[k]*a[k];
            v=sqrt(v);
            printf("%.3lf\n",v);
      }
    }
}

 

hdu5826

原文:http://www.cnblogs.com/shimu/p/5762311.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!