考虑两个质量均为m,速度分别v1、v2的小球发生完全弹性碰撞的影响:

由动能守恒得:

$\frac{1}{2}mv_1^2+\frac{1}{2}mv_2^2=\frac{1}{2}mv_1'^2+\frac{1}{2}mv_2'^2$
$v_1^2+v_2^2=v_1'^2+v_2'^2$

由动量守恒得:

$mv_1+mv_2=mv_1'+mv_2'$
$v_1+v_2=v_1'+v_2'$
$v_1^2+v_2^2+2v_1v_2=v_1'^2+v_2'^2+2v_1'v_2'$

所以

$v_1v_2=v_1'v_2'$
$v_1'=v_2$
$v_2'=v_1$

结论:两个质量相同的小球发生完全弹性碰撞后交换速度。

由于询问的是第k小的速率,并没有要求是哪个小球,所以可以视为小球并没有发生碰撞,而是直接按原速度穿过去,所以直接计算出每个小球在t时刻的速度就可以了。

现在考虑怎么求速度:

每一时刻加速度$av=C$

而加速度可以看做是速度函数的导数,

设$f(x)$为x时刻的速度,$f(0)=v$,$f(x)f'(x)=C$

解得

$f(x)=\sqrt{2Cx+v^2}$

因为在t时刻,影响最终速度排名的只有初速度v,所以只需要用数据结构维护v的顺序就可以了。

时间复杂度$O((n+q)\log n)$

#include<cstdio>
#include<cmath>
#define N 200010
using namespace std;
typedef long long ll;
const double A=0.8;
int n,c,x,y,z,size[N],son[N][2],val[N],f[N],tot,root,data[N],id[N],cnt;
int ins(int x,int p){size[x]++;int b=p>=val[x];if(!son[x][b]){son[x][b]=++tot;f[tot]=x;size[tot]=1;val[tot]=p;return tot;}else return ins(son[x][b],p);
}
void dfs(int x){if(son[x][0])dfs(son[x][0]);data[++cnt]=val[x];id[cnt]=x;if(son[x][1])dfs(son[x][1]);
}
int build(int fa,int l,int r){int mid=(l+r)>>1,x=id[mid];f[x]=fa;son[x][0]=son[x][1]=0;size[x]=1;val[x]=data[mid];if(l==r)return x;if(l<mid)size[x]+=size[son[x][0]=build(x,l,mid-1)];if(r>mid)size[x]+=size[son[x][1]=build(x,mid+1,r)];return x;
}
inline int rebuild(int x){cnt=0;dfs(x);return build(f[x],1,cnt);
}
inline void insert(int p){if(!root){root=tot=size[1]=1;val[1]=p;return;}int x=ins(root,p);int deep=0;int z=x;while(f[z])z=f[z],deep++;if(deep<log(tot)/log(1/A))return;while((double)size[son[x][0]]<A*size[x]&&(double)size[son[x][1]]<A*size[x])x=f[x];if(!x)return;if(x==root){root=rebuild(x);return;}int y=f[x],b=son[y][1]==x,now=rebuild(x);son[y][b]=now;
}
inline int kth(int k){int x=root,sum;while(1){sum=size[son[x][0]]+1;if(k==sum)return val[x];if(k<sum)x=son[x][0];else k-=sum,x=son[x][1];}
}
inline void read(int&a){char c;bool f=0;a=0;while(!((((c=getchar())>='0')&&(c<='9'))||(c=='-')));if(c!='-')a=c-'0';else f=1;while(((c=getchar())>='0')&&(c<='9'))(a*=10)+=c-'0';if(f)a=-a;
}
int main(){read(n);read(c);while(n--)read(x),read(y),read(z),insert(x);read(n);while(n--){read(x);if(x)read(y),read(z),z=kth(z),printf("%.3f\n",sqrt(2*(ll)c*(ll)y+(ll)z*(ll)z));else read(x),read(y),read(y),insert(x);}return 0;
}

  

转载于:https://www.cnblogs.com/clrs97/p/4403245.html

BZOJ3570 : DZY Loves Physics I相关推荐

  1. CodeForces 444C. DZY Loves Physics(枚举+水题)

    转载请注明出处:http://blog.csdn.net/u012860063/article/details/37509207 题目链接:http://codeforces.com/contest/ ...

  2. Codeforces Round #FF 446 C. DZY Loves Fibonacci Numbers

    參考:http://www.cnblogs.com/chanme/p/3843859.html 然后我看到在别人的AC的方法里还有这么一种神方法,他预先设定了一个阈值K,当当前的更新操作数j<K ...

  3. Codeforces 447C - DZY Loves Sequences

    447C - DZY Loves Sequences 思路:dp 代码: #include<bits/stdc++.h> using namespace std; #define ll l ...

  4. Codeforces 446C —— DZY Loves Fibonacci Numbers(线段树)

    题目:DZY Loves Fibonacci Numbers 题意比較简单,不解释了. 尽管官方的题解也是用线段树,但还利用了二次剩余. 可是我没有想到二次剩余,然后写了个感觉非常复杂度的线段树,还是 ...

  5. CF A. DZY Loves Hash

    A. DZY Loves Hash time limit per test 1 second memory limit per test 256 megabytes input standard in ...

  6. BZOJ 3309 DZY Loves Math

    3309: DZY Loves Math Description 对于正整数n,定义f(n)为n所含质因子的最大幂指数.例如f(1960)=f(2^3 * 5^1 * 7^2)=3, f(10007) ...

  7. HDU 5646 DZY Loves Partition

    题目链接: hdu:http://acm.hdu.edu.cn/showproblem.php?pid=5646 bc:http://bestcoder.hdu.edu.cn/contests/con ...

  8. 【BZOJ3512】DZY Loves Math IV(杜教筛)

    [BZOJ3512]DZY Loves Math IV(杜教筛) https://www.cnblogs.com/cjyyb/p/10165338.html

  9. Codeforces 446C. DZY Loves Fibonacci Numbers【斐波那契+线段树】

    C. DZY Loves Fibonacci Numbers [题目描述] 传送门 [题解] 我们可以知道斐波那契数列有两个性质: ∑i=1nFi=Fn+2−F2\sum_{i=1}^{n} F_i= ...

最新文章

  1. 高温保护_连续4天高温预警!高温作业,这些劳动保护知识一定要懂!
  2. BZOJ 1009 [HNOI2008]GT考试
  3. day12 装饰器进阶
  4. Qt Post上传图片文件到服务器
  5. Android之使用HandlerThread 以及如何退出总结
  6. select into from和insert into select
  7. 【12】Python函数学习(中)
  8. UML图---基本概念
  9. 谁说“IT 不理解 OT”?开放自动化来破局!
  10. Ubuntu系统---C++之Eclipse IDE 编译器安装
  11. PSV 基本的游戏下载方式及局部功能介绍
  12. windows10 家庭版U盘安装教程
  13. githup用户名密码怎么看_水星无线路由器的密码忘了如何解决【解决方法】
  14. Vue_路由_query参数_params参数_命名路由_props配置_编程式路由导航_缓存路由组件_新的生命周期钩子_全局、独享、组件内路由守卫_路由的两种工作模式
  15. 如何开启Windows共享文件夹服务
  16. 安卓逆向 -- 算法基础(数字签名)
  17. phpcms 会员头像h5上传_phpcms v9前台会员中心上传头像可getshell及修复
  18. Microsoft Excel 加载数据分析工具
  19. Java代码实现阿里云视频上传
  20. 特征提取 - 海森矩阵(Hessian Matrix)及一个用例(图像增强)

热门文章

  1. v-slot vue2.6新增指令使用指南
  2. [pytorch、学习] - 5.1 二维卷积层
  3. 车智汇模式系统技术开发数据
  4. 初探ArrayList之删除
  5. HYSBZ - 1050(旅行comf 并查集Java实现)
  6. 定制或外购适配器规格需求列表
  7. halcon trainf_ocr_class_svm 训练OCR分类器
  8. 【图像处理】——改变图像的大小(降采样重采样)下采样和上采样
  9. 学习笔记(38):Python实战编程-窗体显示
  10. Halcon例程(基于多个标定图的单目相机标定)详解—— Camera_calibration_multi_image.hdev