HDU 5826 physics物理

Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)

 

Description

题目描述

There are n balls on a smooth horizontal straight track. The track can be considered to be a number line. The balls can be considered to be particles with the same mass. At the beginning, ball i is at position Xi. It has an initial velocity of Vi and is moving in direction Di.(Di∈−1,1) Given a constant C. At any moment, ball its acceleration Ai and velocity Vi have the same direction, and magically satisfy the equation that Ai * Vi = C. As there are multiple balls, they may collide with each other during the moving. We suppose all collisions are perfectly elastic collisions. There are multiple queries. Each query consists of two integers t and k. our task is to find out the k-small velocity of all the balls t seconds after the beginning. * Perfectly elastic collision : A perfectly elastic collision is defined as one in which there is no loss of kinetic energy in the collision.

在一个光滑水平直线轨道上有n个小球。轨道可以被当做一条直线。小球可以被当做质量相同的质点。

最初,小球i在位置Xi。其初速度大小为Vi,速度方向为Di。(Di∈−1,1)

给定常量C。任意时刻,小球的加速度Ai与速度Vi同方向,并十分玄学地满足等式Ai * Vi = C。

有多个小球,他们可能在运动过程中发生碰撞。我们假定所有碰撞均为完全弹性碰撞。

有多次询问,每次询问有两个整数t与k。我们的任务是找出所有小球开始运动t秒后第k小的速度。

* 完全弹性碰撞 : 在碰撞中不损失动能即为完全弹性碰撞。

Input

输入

The first line contains an integer T, denoting the number of testcases. For each testcase, the first line contains two integers n <= 10^5 and C <= 10^9. n lines follow. The i-th of them contains three integers Vi, Xi, Di. Vi denotes the initial velocity of ball i. Xi denotes the initial position of ball i. Di denotes the direction ball i moves in.  The next line contains an integer q <= 10^5, denoting the number of queries. q lines follow. Each line contains two integers t <= 10^9 and 1<=k<=n. 1<=Vi<=10^5,1<=Xi<=10^9

第一行为一个整数T,表示测试用例的数量。

对于每个测试用例,第一行有两个整数n <= 10^5 与 C <= 10^9。

随后n行。第i行有三个整数Vi,Xi,Di。Vi表示球i的初速度大小。Xi表示球i的初始位置。Di表示球i的运动方向。

下一行有一个整数q <= 10^5,表示询问的数量。

随后q行。每行有两个整数 t <= 10^9 与 1<=k<=n。

1<=Vi<=10^5,1<=Xi<=10^9

Output

输出

For each query, print a single line containing the answer with accuracy of 3 decimal digits.

对于每个询问,输出一行答案,精确到小数点后三位。

Sample Input - 输入样例

Sample Output - 输出样例

1

3 7

3 3 1

3 10 -1

2 7 1

3

2 3

1 2

3 3

6.083

4.796

7.141

【题解】

  加速每一个小球都有一个初始状态,因为A*V=C,所以所有球的当前状态只和初始状态的后t秒有关。

  把题目给的表达式转成和时间t有关的函数。

    A(t) *V(t)  = C

  速度的变化率也就是加速度,即A(t) = V’(t)

  带入上面的式子

    V’(t)*V(t) =  C

  然后求不定积分,求原函数…………(反正我只会求导所以默默地逆向)

    V(t)*V(t)/2 = Ct

    V(t) = 

  如果有常数什么的话就不管了,反正都能通过移动t来达到相应的速度。

  根据动量定理,小球碰撞之后只是交换速度,其实没有什么变化,所以位置和速度方向就不用管了。

  把每个小球的初始速度换算成t,t越大速度越快,可以得到小球速度的排名。每次查询时间的增量是固定,因此不影响排名。

【代码 C++】

 #include <cstdio>
#include <algorithm>
#include <cmath>
double data[];
int main(){
__int64 T, n, c, v, i, t, k;
char r[];
scanf("%I64d", &T);
while (T--){
scanf("%I64d%I64d", &n, &c); c <<= ;
for (i = ; i <= n; ++i){
scanf("%I64d", &v); gets(r);
data[i] = (double)v*v / c;
}
std::sort(data + , data + n + );
scanf("%I64d", &n);
while (n--){
scanf("%I64d%I64d", &t, &k);
printf("%.3lf\n", sqrt(c*(data[k] + t)));
}
}
return ;
}

HDU 5826 physics(物理)的更多相关文章

  1. hdu 5826 physics 物理题

    physics 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5826 Description There are n balls on a smoo ...

  2. HDU 5826 physics (积分推导)

    physics 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5826 Description There are n balls on a smoo ...

  3. hdu 5826 physics (物理数学,积分)

    physics Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Sub ...

  4. HDU 5826 physics

    该问题和xi,di均无关,碰撞只会使得速度反向,大小不会变.因此只要计算速度. #pragma comment(linker, "/STACK:1024000000,1024000000&q ...

  5. hdu 5826 (物理) physics

    题目:这里 题意:光滑的水平直线上有n个质量相等的小球,已知每个小球的初始位置,初始速度和方向,每个小球的每个时刻的加速度a都满足a*v=c,v是该时刻的速度,c是已知的 常数,小球之间的碰撞是完全碰 ...

  6. Physics(物理系统)

    物理: Physics            Box2d   Unity 内置NVDIA PhysX物理引擎 刚体:要使一个物体在物理控制下,简单添加一个刚体给它.这时,物体将受重力影响,并可以与其他 ...

  7. SPRITEKIT游戏框架之关于PHYSICS物理引擎属性

    Spritekit提供了一个默认的物理模拟系统,用来模拟真实物理世界,可以使得编程者将注意力从力学碰撞和重力模拟的计算中解放出来,通过简单地代码来实现物理碰撞的模拟,而将注意力集中在更需要花费精力的地 ...

  8. hdu 5144(三分+物理)

    NPY and shot Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tota ...

  9. Just a Joke HDU - 4969(物理+积分)

    题目链接:https://vjudge.net/problem/HDU-4969#author=0 题意:一个人在圆心以V2速度追赶一个以V1的速度进行圆周运动,问在圆心的人能否在不超过D的距离追上他 ...

随机推荐

  1. :first // :last

    描述: 获取匹配的第一个元素 HTML 代码: <ul> <li>list item 1</li> <li>list item 2</li> ...

  2. vsftp不同帐号的目录和权限

    搭建FTP服务器,供虚拟用户使用,实现不同用户具有不同家目录和权限. 1.用户peter的家目录为/var/ftp/vuserdir/peter,他只有下载权限,没有其他权限(创建目录.重命名.删除. ...

  3. JS和CSS的多浏览器兼容(2)

    2.Css的浏览器兼容性 方法一,根据不同的浏览器加载不同的css file <!DOCTYPE html>  <html> <head> <title> ...

  4. linux man

    man能够为除命令之外的配置文件.系统调用.库调用等都能提供帮助手册,他们分别位于不同的章节中: 1.用户命令 2.系统调用 3.库调用 4.设备文件 5.配置文件 6.游戏 7.杂项 8.管理命令

  5. 在MyEclipse中搭建Spring MVC开发环境

    环境版本 IDE:MyEclipse 8.5 Spring:spring 3.2.8 JDK:1.6 1.打开MyEclipse-->File-->New-->Web Project ...

  6. APP运营推广那点事【干货】

    你的手机里面有多少应用?什么样的手机应用吸引你?下载之后经常用还是让他shi在那里?又或者刚点进去就卸载? 一款成功的应用,开发APP只是第一步,比前者更重要的是“养”APP,APP就像是一个需要不断 ...

  7. [已解决] java.lang.ClassNotFoundException: org.apache.jsp.WEB_002dINF.com.yourproject.test_jsp

    同事遇到了一个问题,开始项目运行的好好的,过了一段时间再访问页面会报出如下错误信息(只贴了部分), 这是为啥呢,可能是由于servlet-api版本jar包重复导致的,他项目本身使用了servlet- ...

  8. CentOS系统没有javac命令

    自己捯饬的linux系统(CentOS)安装了jdk后,只能识别java命令而不识别javac.根据网上的教程设置环境变量后还是不行. 后来看了下/usr/java/jdk**目录下面根本没有java ...

  9. [团队项目]sprint3 & 团队贡献分。

    希望各组认真准备,拿出最好的阵容最好的状态,展示一学期的学习与工作成果. 各组注意完成sprint3的博客,写上团队贡献分. 将演示PPT(如果有)和代码上传到github. 截止日期:2016.6. ...

  10. java对象equals方法的重写

    根类Object中的equals方法描述: public boolean equals(Object obj)The equals method for class Object implements ...