BZOJ3570 : DZY Loves Physics I

考慮兩個質量均為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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/273758.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/273758.shtml
英文地址,請注明出處:http://en.pswp.cn/news/273758.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

數據庫---主鍵約束

1、設置主鍵約束(1)、方式一&#xff1a;創建表時&#xff0c;在字段在描述處聲明指定字段為主鍵&#xff1b; CREATE TABLE 表名(字段 類型(長度) PRIMARY KEY,字段 類型(長度) );CREATE TABLE STUDENT(STU_ID INT PAIMARY KEY,STU_NAME VARCHAR(255) );(2)、方式二&#xff1…

關于VS2010幫助文檔的使用和VC6.0在Win7 64位下的使用

由于購置了新的電腦&#xff0c;安裝的是Win7 64位的操作系統&#xff0c;這兩天我在重新安裝編程環境的時候遇到一些問題&#xff0c;現在都解決掉了&#xff0c;分享出來以供需要的人參考。 一、以前使用的是VS2008&#xff0c;從VC6到2008這么多年了一只使用的MSDN是帶索引的…

數據庫---聚合查詢

聚合查詢&#xff1a;縱向查詢&#xff0c;它是對一列的值進行計算&#xff0c;然后返回一個單一的值&#xff1b;另外聚合查詢是忽略空值。 ?count&#xff1a;統計指定列不為NULL的記錄行數&#xff1b;?sum&#xff1a;計算指定列的數值和&#xff0c;如果指定列類型不是數…

【記憶法】心智繪圖

心智繪圖方法 1.提出具體、明確的記憶任務(以30min為單位) 記憶25min休息5min2.及時復習&#xff0c;減少遺忘(記憶關鍵字) 看到關鍵詞能夠回想起全部的內容。看到關鍵詞能夠產生生動的圖像。3.平時多背誦 有時間多記一些小東西、小片段4.復述和再現 聽到或看到什么好的故事要及…

數據庫---分組查詢

一、分組查詢&#xff1a;指使用group by字句對查詢信息進行分組。格式&#xff1a; SELECT 字段1,字段2... FROM 表名 GROUP BY 分組字段 HAVING 分組條件; 分組操作中的having子語句&#xff0c;是用于在分組后對數據進行過濾的&#xff0c;作用類似于where條件。 1、having與…

centos安裝coreseek

安裝依賴 yum install make gcc g gcc-c libtool autoconf automake imake mysql-devel libxml2-devel expat-devel 下載coreseek 4.1 $ wget http://www.coreseek.cn/uploads/csft/4.0/coreseek-4.1-beta.tar.gz $ tar xzvf coreseek-4.1-beta.tar.gz $ cd coreseek-4.1-beta…

HTML---HTML簡介

1、HTML簡介&#xff1a;*什么事HTML&#xff1f; -HypperText Markup Language&#xff1a;超文本標記語言&#xff0c;網頁語言。**超文本&#xff1a;超出文本的范疇&#xff0c;使用HTML可以輕松實現簡單操作。**標記&#xff1a;HTML所有的操作都是通過標記實現的&…

谷歌Android各版本的代號變遷

簡單回顧下Android發展歷程2003年10月&#xff0c;Andy Rubin&#xff08;安迪魯賓&#xff09;等人創建Android公司&#xff0c;并組建Android團隊。2005年8月17日&#xff0c;Google低調收購了成立僅22個月的高科技企業Android及其團隊。安迪魯賓成為Google公司工程部副總裁&…

HTMLL---HTML中常用標簽(文字、注釋標簽)

1、文字標簽和注釋標簽*文字標簽和注釋標簽- <font></font>-屬性* size:文字的大小&#xff0c;取值范圍1-7&#xff0c;超出7默認為7* color:文字的顏色-兩種表示方式**英文單詞&#xff1a; red, green, blue, black, white, yellow, gray**使用十六進制數表示&a…

Map.Entry

如何簡便的遍歷Map 你是否已經對每次從Map中取得關鍵字然后再取得相應的值感覺厭倦&#xff1f; 使用JDK5的增強for循環&#xff0c;來遍歷Map,簡單多了&#xff0c;比Map.Entry還方便。 看代碼&#xff1a; Java代碼 for (String key : map.keySet()) { System.out.pri…

HTML---HTML中常用的標簽(標題,水平,特殊標簽)

1、標題標簽、水平標簽和特殊字符*標題標簽- <h1>... </h1>、 <h2>... </h2>、 <h3>... </h3>、... <h6>... </h6>-特點&#xff1a;從h1到h6字體由大到小、同時 自動換行。*水平標簽- <hr/>-屬性** size&#xff1a;水…

圖解SQL的inner join(join)、left join、right join、full outer join、union、union all的區別...

對于SQL的Join&#xff0c;在學習起來可能是比較亂的。我們知道&#xff0c;SQL的Join語法有很多inner的&#xff0c;有outer的&#xff0c;有left的&#xff0c;有時候&#xff0c;對于Select出來的結果集是什么樣子有點不是很清楚。Coding Horror上有一篇文章,通過文氏圖 Ven…

數據庫---四中連接查詢(交叉、左連接、右連接、完整查詢)

個人博客 &#xff1a;https://www.siyuan.run CSDN&#xff1a;https://blog.csdn.net/siyuan 微信小程序&#xff1a;思遠Y 1、交叉連接查詢 : (基本不適用---得到的是兩張表數據的乘積) 語法&#xff1a;SELECT * FROM 表1,表2; PS&#xff1a;與表關系無關 示例&#xff…

如何用C#語言構造蜘蛛程序

"蜘蛛"&#xff08;Spider&#xff09;是Internet上一種很有用的程序&#xff0c;搜索引擎利用蜘蛛程序將Web頁面收集到數據庫&#xff0c;企業利用蜘蛛程序監視競爭對手的網站并跟蹤變動&#xff0c;個人用戶用蜘蛛程序下載Web頁面以便脫機使用&#xff0c;開發者利…

數據庫---練習題(45道)

準備工作 CREATE DATABASE STUDENTS; CREATE TABLE STUDENT( SNO VARCHAR(32) PRIMARY KEY NOT NULL, SNAME VARCHAR(32) NOT NULL, SSEX VARCHAR(32) NOT NULL, SBIRTHDAY DATETIME, CLASS VARCHAR(20) ); CREATE TABLE COURSE( CNO VARCHAR(20) PRIMARY KEY NOT NULL, CNAM…

LeetCode OJ - Populating Next Right Pointers in Each Node II

題目&#xff1a; Follow up for problem "Populating Next Right Pointers in Each Node". What if the given tree could be any binary tree? Would your previous solution still work? Note: You may only use constant extra space.For example,Given the fo…

數據庫---JDBC

1.1 JDBC概述JDBC&#xff08;Java DataBase Connectivity,java數據庫連接&#xff09;是一種用于執行SQL語句的Java API。JDBC是Java訪問數據庫的標準規范&#xff0c;可以為不同的關系型數據庫提供統一訪問&#xff0c;它由一組用Java語言編寫的接口和類組成。 JDBC需要連接驅…

23種設計模式之簡單工廠

簡單工廠模式描述的是&#xff0c;通過類的繼承關系&#xff0c;父類&#xff08;工廠類&#xff09;與子類&#xff08;產品類&#xff09;&#xff0c;調用父類中的方法&#xff0c;實際干活兒的是子類中的方法&#xff1b;封裝需求的不確定性&#xff0c;做出通用的編程&…

原生JDBC操作數據庫流程

1、class.forName()加載數據驅動 2、DriverManager.getConnection()獲取數據庫連接對象。 3、根據SQL或sql會話對象&#xff0c;有兩種方式Statement、PreparedStatement。 4、執行sql處理結果集&#xff0c;如果有參數就設置參數。 5、關閉結果集&#xff0c;關閉會話&#xf…

verilog HDL 編碼風格

1、有意義且有效的名字。 2、同一信號在不同層次應該保持一致。 3、添加有意義的后綴&#xff0c;使信號的有效性更加明確。 4、模塊輸出寄存器化&#xff0c;使得輸出的驅動強度和輸入延時是可以預測的。 5、使用括號表明優先級。 6、每一個if都應該有一個else。如果esle沒有任…