苏州网站推广如何,做网站广告怎么做,东平企业建站公司,科技开发公司考虑两个质量均为m#xff0c;速度分别v1、v2的小球发生完全弹性碰撞的影响#xff1a; 由动能守恒得#xff1a; $\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^2v_2^2v_1^2v_2^2$ 由动量守恒得#xff1a; $mv_1mv_2mv_1mv_2$$v_1v_2v_1v…考虑两个质量均为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^2v_2^2v_1^2v_2^2$ 由动量守恒得 $mv_1mv_2mv_1mv_2$$v_1v_2v_1v_2$$v_1^2v_2^22v_1v_2v_1^2v_2^22v_1v_2$ 所以 $v_1v_2v_1v_2$$v_1v_2$$v_2v_1$ 结论两个质量相同的小球发生完全弹性碰撞后交换速度。 由于询问的是第k小的速率并没有要求是哪个小球所以可以视为小球并没有发生碰撞而是直接按原速度穿过去所以直接计算出每个小球在t时刻的速度就可以了。 现在考虑怎么求速度 每一时刻加速度$avC$ 而加速度可以看做是速度函数的导数 设$f(x)$为x时刻的速度$f(0)v$$f(x)f(x)C$ 解得 $f(x)\sqrt{2Cxv^2}$ 因为在t时刻影响最终速度排名的只有初速度v所以只需要用数据结构维护v的顺序就可以了。 时间复杂度$O((nq)\log n)$ #includecstdio
#includecmath
#define N 200010
using namespace std;
typedef long long ll;
const double A0.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 bpval[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(lr)1,xid[mid];f[x]fa;son[x][0]son[x][1]0;size[x]1;val[x]data[mid];if(lr)return x;if(lmid)size[x]size[son[x][0]build(x,l,mid-1)];if(rmid)size[x]size[son[x][1]build(x,mid1,r)];return x;
}
inline int rebuild(int x){cnt0;dfs(x);return build(f[x],1,cnt);
}
inline void insert(int p){if(!root){roottotsize[1]1;val[1]p;return;}int xins(root,p);int deep0;int zx;while(f[z])zf[z],deep;if(deeplog(tot)/log(1/A))return;while((double)size[son[x][0]]A*size[x](double)size[son[x][1]]A*size[x])xf[x];if(!x)return;if(xroot){rootrebuild(x);return;}int yf[x],bson[y][1]x,nowrebuild(x);son[y][b]now;
}
inline int kth(int k){int xroot,sum;while(1){sumsize[son[x][0]]1;if(ksum)return val[x];if(ksum)xson[x][0];else k-sum,xson[x][1];}
}
inline void read(inta){char c;bool f0;a0;while(!((((cgetchar())0)(c9))||(c-)));if(c!-)ac-0;else f1;while(((cgetchar())0)(c9))(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),zkth(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