• hdu 5826 (物理) physics


    题目:这里

    题意:光滑的水平直线上有n个质量相等的小球,已知每个小球的初始位置,初始速度和方向,每个小球的每个时刻的加速度a都满足a*v=c,v是该时刻的速度,c是已知的

    常数,小球之间的碰撞是完全碰撞(不明白就百度),然后q个询问,每次询问第t秒时速度第k小的小球速度是多少?


    完全碰撞即碰撞后速度交换,速度还是那两个速度,只是不是原来那个球了而已,但这并不时需要考虑的,因为只需要关心速度,所以初始方向以及初始位置什么的都不需要在意,

    因为加速度a=c/v,加速度每时每刻都在变,速度每时每刻也在变,而且不是均匀的变化,所以因为加速度a=dv/dt=c/v==>dt/dv=v/c==>t=v^2/(2*c)-v0(初始速度)^2/(2*c)

    v=sqrt(v0*v0+2*t*c),由这个式子可以知道初始速度的大小顺序在t秒后速度的大小顺序依旧不变,现在是第几大的t秒后依旧是第几大的。

     1 #include<cstdio>
     2 #include<cstring>
     3 #include<iostream>
     4 #include<algorithm>
     5 #include<cmath>
     6 using namespace std;
     7 
     8 const int M = 1e5 + 10;
     9 double v[M];
    10 
    11 int main()
    12 {
    13     int t,n;double c;
    14     scanf("%d",&t);
    15     while (t--){
    16         scanf("%d%lf",&n,&c);
    17         for (int i=1 ; i<=n ; i++){
    18             int x,y;
    19             scanf("%lf%d%d",&v[i],&x,&y);
    20         }
    21         sort(v+1,v+n+1);
    22         int q;
    23         scanf("%d",&q);
    24         while (q--){
    25             int k;double ti;
    26             scanf("%lf%d",&ti,&k);
    27             printf("%.3lf
    ",sqrt(v[k]*v[k]+2*ti*c));
    28         }
    29     }
    30     return 0;
    31 }
  • 相关阅读:
    Python中的memoryview
    Python常见陷阱
    特殊方法 之 len __repr__ __str__
    collections模块
    使用math中的hypot实现向量
    Ellipsis对象
    array
    标准库heapq的使用
    Mysql常用命令
    使用npm查看安装的包
  • 原文地址:https://www.cnblogs.com/JJCHEHEDA/p/5762547.html
Copyright © 2020-2023  润新知