HDU-5826 physics(物理定理+微分方程)
来源:互联网 发布:无忧保姆 知乎 编辑:程序博客网 时间:2024/06/06 17:20
题意:
给定n个质量相同的小球,在光滑的水平面上移动,每个小球有一个初始速度v0,位置x0,方向d(-1或者1),给定一个常数c,小球在移动的过程中有一个加速度a,始终满足a*v=c。小球之间进行碰撞属于完全弹性碰撞,给定q次询问,每次询问一个t和k,问t秒后速度第k小的速度为多少,输出保留3位小数。
思路:
由于小球质量相等,且满足完全弹性碰撞,所以两个小球碰撞后只会交换速度(也包括方向)。现在要求t秒后速度第k小的速度,经分析会发现初始时速度第k小的速度若干秒后仍然是第k小,因为速度是一直增加的,且完全弹性碰撞又不会损失动能,因此若干秒后第k小的速度只不过是移动到其它小球上,而题目只要求速度,所以我们就可以忽略掉小球的位置和方向了。
根据题目条件可以列出式子加速度a = c/v,所以根据导数的几何意义,可以列出方程dv/dt=c/v,得到微分方程vdv = cdt,两端同时积分得1/2*v*v = ct+b(常数),然后根据t = 0时刻速度为vo求得常数b = 1/2*v0*v0,然后代入求解v即可。
突然回忆:log(a)b的导数是1/b*lna
代码:
#include <bits/stdc++.h>using namespace std;const int maxn = 1e5+5;int tt, n, c, x, d, q, t, k;int v[maxn];int main(){for(scanf("%d", &tt); tt--;){scanf("%d %d", &n, &c);for(int i = 1; i <= n; ++i)scanf("%d %d %d", &v[i], &x, &d);sort(v+1, v+n+1);scanf("%d", &q);while(q--){scanf("%d %d", &t, &k);printf("%.3f\n", sqrt(2ll*c*t+1ll*v[k]*v[k]));}}return 0;}
继续加油~
阅读全文
1 0
- HDU-5826 physics(物理定理+微分方程)
- hdu 5826 physics 物理+数学微分方程
- hdu 5826 physics (物理+积分)
- HDU 5826 physics(物理)
- hdu 5826 physics (物理数学)
- HDU.physics【物理+积分】【8月13】
- HDU 5826 微分方程
- hdu 5826 physics
- HDU 5826 physics
- hdu 5826 physics
- HDU 5826-physics
- HDU 5572 An Easy Physics Problem (物理、计算几何)
- HDU-5826-physics-数学推导
- HDU 5826 physics 【弹性碰撞】
- 物理题(physics,HDU 5826)
- Physics物理引擎下载
- POJ3684 Physics Experiment 【物理】
- cocos2dx Physics 物理世界
- zookeeper
- SAP UI5初步结构分析研究(六)
- Android中Handle机制源码解析
- 第一篇文章
- 堆排序算法
- HDU-5826 physics(物理定理+微分方程)
- Java技术----Java泛型详解
- [R] csv文件读取之逗号分隔符相关
- Jenkins与Docker相关的Plugin使用
- IT行业Java编程培训学习方法有哪些?
- Chrome Shortcuts快捷键
- jQuery中ajax接收数据时都能接收什么类型
- 写一点我自己做平衡小车的经验吧
- cropper.js HTML5 裁剪图片 canvas 转base64