poj 3684--Physics Experiment(碰撞)
2014-03-05 23:32
447 查看
有n个半径为r的球,从距地面高度为h的圆筒,每隔1秒坠落一个,求t时刻各球距地面的距离。
http://poj.org/problem?id=3684
假设小球半径为0,碰撞就是交换速度,碰撞后的小球沿着对方原来的轨迹运动。
当半径大于0时,在高度上加上偏移量2ri即可(r的单位是厘米。。)(可以画图理解,先画两个球球。。)
高度计算是简单的物理公式推导。。
http://poj.org/problem?id=3684
假设小球半径为0,碰撞就是交换速度,碰撞后的小球沿着对方原来的轨迹运动。
当半径大于0时,在高度上加上偏移量2ri即可(r的单位是厘米。。)(可以画图理解,先画两个球球。。)
高度计算是简单的物理公式推导。。
#include <cmath> #include <cstdio> #include <cstring> #include<algorithm> using namespace std; const double inf = 1.0 * 0x3f3f3f3f; const double g = 10.0; int c, n, h, r, t; double d[100 + 10]; double cal(int x){ if(x < 0) return h; double T = sqrt(2 * h / g); int k = x / T; double tt; if(k % 2) tt = T + k * T - x; else tt = x - k * T; return h - 0.5 * g * tt * tt; } int main(){ scanf("%d", &c); while(c--){ scanf("%d%d%d%d", &n, &h, &r, &t); for(int i=0; i<n; i++){ d[i] = cal(t - i); } sort(d, d + n); for(int i=0; i<n; i++) printf("%.2f%c", d[i] + 2 * r * i / 100.0, i == n - 1 ? '\n' : ' '); } return 0; }
相关文章推荐
- 2632 Crashing Robots的解决方法
- 1573 Robot Motion (简单题)
- poj 2485 Highways
- poj 1511 Invitation Cards
- poj1042
- poj1080
- poj1088
- poj1063 Flip and Shift
- poj 3249 Test for Job 最长路
- 状态压缩DP poj 2817 WordStack 入门题
- POJ 2406 Power Strings
- POJ 2352 Stars
- POJ 3264 Balanced Lineup
- POJ 1979
- 线段树的运用 以及poj上的经典题目
- POJ 2801 填词游戏
- POJ1003解题方案
- POJ2418解题方案
- POJ 1003 java
- POJ 1625(ac自动机+dp+高精度)