码迷,mamicode.com
首页 > 其他好文 > 详细

hdu5826

时间:2016-08-11 21:01:13      阅读:144      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!