标签:
在一条无限长水平直轨道上有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); } } }
标签:
原文地址:http://www.cnblogs.com/shimu/p/5762311.html