hud 5826 physics(积分)

题目链接

题意:给出几个初速度,初位置,以及小球运动的方向,速度和加速度一直在改变,但是速度和加速度的方向是同向,且一直满足C=V*a,问第k小速度是多少
思路:在比赛的时候就一直在想这个问题,速度和加速度一直都在改变,刚开始推出个公式,没有用微积分,结果错了,然后又想了想,用积分但是不知道怎么下手,直到比赛结束

题解:速度和加速度都在改变所以,我们来用微元法:考虑一段极小的时间间隔:dt. 速度增量为 dv . 则:dv=c/v0*dt
两边同时积分:dv的积分区间为[v0, v], dt的积分区间为[0, t].
那么结果为:v2=v02+2ct;
还有就是因为是完全弹性碰撞,所以速度大小不变的原先速度大的小球碰撞后交换速度和加速度,速度还是大,那么我们只需要对初速度排一下序即可,
代码如下:

用的c++输入输出超时了

#include<stdio.h>
#include<iostream>
#include<math.h>
#include<algorithm>
using namespace std;
const int N=100005;
int x,v1;
double v[N],vx;
int q;
double T;
int k;
int main()
{
    int t,n;
    double c;
    scanf("%d",&t);
    while(t--)
    {
       scanf("%d %lf",&n,&c);
       for(int i=0;i<n;i++)
       {
           scanf("%lf%d%d",&v[i],&x,&v1);
       }
       sort(v,v+n);
       
       scanf("%d",&q);
       for(int j=0;j<q;j++)
         {
             scanf("%lf%d",&T,&k);
                 vx=sqrt((double)v[k-1]*v[k-1]+(double)2*c*T);
           printf("%.3lf\n",vx);
         }
    }
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值