国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

[XJB研究] [分塊] 關于分塊時間復雜度的證明

2019-11-08 20:03:33
字體:
來源:轉載
供稿:網友

如果你知道分塊的時間復雜度是O(n√),請忽略這篇博文。 如果你并不關心是怎么證明出來的,請忽略這篇博文。 如果你是神犇,請務必忽略這篇博文。 以下證明又是在數學課上瞎想,如果有誤歡迎提出…… (數學老師我錯了......) 1、規定符號 n:序列的長度; S:將這個序列分成S塊; C:分成的每個塊內有C個元素; x:查詢或修改時,需要操作的整塊數; y:查詢或修改時,需要操作的零散區間中元素個數; L:查詢或修改時,操作序列的長度。 通過符號規定,可以看出一定有:SC=n,x≤S,y<2C。 2、目的 通過分塊,統一維護塊內元素,查詢時可以快速取出整塊內答案,再與零散區間合并,達到降低時間復雜度的目的。(這種元素需滿足區間加法維護的性質)。 因此,需要最小化修改與查詢次數。即最小化x+y的值。 3、證明 ① 當最差情況下時,操作的區間為[2,n?1],此時需要查詢S?2個塊和2C?2個元素,即x=S?2,y=2C?2x+y=S?2+2C?2=S+2C?4。忽略常數,得x+y=S+C。 因SC=n,則C=nS。 代入,得 x+y=S+nS≥2?S?nS?????√=2n√ 當且僅當S=nS,即S=n√時,等號成立。 所以在最壞時,時間復雜度為O(n√)。常數不超過3。 ② 在一般情況下時,可以得出L=xC+y。 移項,得x=L?yC。 因0<L≤n,0<y<2C,則0<L?y<n?2C。 因C>0,則L?yC<n?2CC=SC?2CC=S?2<Sx+y<S+2C,忽略常數,x+y<S+C。 因SC=nS+C≥2SC???√=2n√。 當且僅當S=C,即S=C=n√時,等號成立。 此時x+y<2n√。 綜上,分塊的時間復雜度為O(n√),常數不超過3。證畢。 分塊中,S與C的取值可以任意,只是當S=C=n√時,時間復雜度最優。在有些JOI題目中(如[BZOJ4241] 歷史研究)使用的SC不是最優的,但是也可以A掉這種題。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 怀来县| 新和县| 葫芦岛市| 名山县| 西乌| 印江| 隆子县| 凤台县| 台南县| 于田县| 观塘区| 潜山县| 商都县| 保康县| 永康市| 依兰县| 静乐县| 平安县| 九龙坡区| 贵定县| 沛县| 遂川县| 井研县| 彭水| 亳州市| 开平市| 陇川县| 合肥市| 福州市| 太和县| 伊金霍洛旗| 乌鲁木齐县| 特克斯县| 普兰店市| 长泰县| 博野县| 会昌县| 安乡县| 柏乡县| 阜城县| 宁都县|