HDU-5826-physics-数学推导
2016-08-12 17:51
204 查看
题意:坐标轴有n个球,每个球有一个位置,初速度,方向,还有一个常数c,满足c=av a和v的加速度相同,若两个球相撞,则发生完全弹性碰撞。q个询问,问每次t时间的速度第k大的小球速度大小是多少、
思路:因为是发生完全弹性碰撞,则两个小球就相当于没有发生碰撞,继续前进。因为是求速度大小,所以和方向没有关系。有因为c=av ,可知,所有小球速度增长的曲线都是这个,初速度不同只是在曲线上的初位置不同,所以速度慢的永远不会追上速度快的。
所以问题就转换成原来速度第k大的小球,t秒时候的速度大小。很容易退出公式 vt=sqrt(2*c*t+v0*v0)
#include<bits/stdc++.h>
using namespace std;
long long v[111111];
int main()
{
int t;
int n;
double c;
scanf("%d",&t);
int x,y;
long long tt;
int k;
int q;
while(t--) {
scanf("%d%lf",&n,&c);
for(int i=1;i<=n;i++) {
scanf("%lld%d%d",&v[i],&x,&y);
}
sort(v+1,v+n+1);
scanf("%d",&q);
while(q--) {
scanf("%lld%d",&tt,&k);
printf("%.3f\n",sqrt(2*tt*c+v[k]*v[k]));
}
}
return 0;
}
思路:因为是发生完全弹性碰撞,则两个小球就相当于没有发生碰撞,继续前进。因为是求速度大小,所以和方向没有关系。有因为c=av ,可知,所有小球速度增长的曲线都是这个,初速度不同只是在曲线上的初位置不同,所以速度慢的永远不会追上速度快的。
所以问题就转换成原来速度第k大的小球,t秒时候的速度大小。很容易退出公式 vt=sqrt(2*c*t+v0*v0)
#include<bits/stdc++.h>
using namespace std;
long long v[111111];
int main()
{
int t;
int n;
double c;
scanf("%d",&t);
int x,y;
long long tt;
int k;
int q;
while(t--) {
scanf("%d%lf",&n,&c);
for(int i=1;i<=n;i++) {
scanf("%lld%d%d",&v[i],&x,&y);
}
sort(v+1,v+n+1);
scanf("%d",&q);
while(q--) {
scanf("%lld%d",&tt,&k);
printf("%.3f\n",sqrt(2*tt*c+v[k]*v[k]));
}
}
return 0;
}
相关文章推荐
- HDU 5826 physics (数学推导)(规律)
- hdu 5826 physics (物理数学)
- HDOJ 5826 physics(数学推导)
- hdu-5826 physics(数学)
- hdu 5826 physics 物理+数学微分方程
- hdu 5826 physics (物理数学,积分)
- HDU 5826 physics (积分推导)
- HDU 5826 physics(公式推导+sort)
- HDU 5675 ztr loves math (数学推导)
- hdu 3117 Fibonacci Numbers(数学推导+矩阵连乘)
- HDU 5826 (物理公式推导)
- hdu 5826 physics 2016 Multi-University 8
- HDU4602+数学+推导公式
- HDU 4919 (数学推导)
- HDU 4565 (数学推导 矩阵快速幂)
- HDU 5826 physics 【弹性碰撞】
- 数学向量推导______Acperience( hdu 5734 2016多校 )
- 【HDU 6129 Just do it】& 数学推导
- HDU-5985-Lucky Coins-2016青岛站D题-数学推导
- 【HDU】2086 - A1 = ?(数学推导)