首頁| 新聞| 娛樂| 游戲| 科普| 文學| 編程| 系統| 數據庫| 建站| 學院| 產品| 網管| 維修| 辦公| 熱點
如果你知道分塊的時間復雜度是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?2。 x+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<S 故x+y<S+2C,忽略常數,x+y<S+C。 因SC=n,S+C≥2SC???√=2n√。 當且僅當S=C,即S=C=n√時,等號成立。 此時x+y<2n√。 綜上,分塊的時間復雜度為O(n√),常數不超過3。證畢。 分塊中,S與C的取值可以任意,只是當S=C=n√時,時間復雜度最優。在有些JOI題目中(如[BZOJ4241] 歷史研究)使用的S和C不是最優的,但是也可以A掉這種題。
索泰發布一款GTX 1070 Mini迷
AMD新旗艦顯卡輕松干翻NVIDIA
索泰發布一款GTX 1070 Mini迷你版本:小機
芭蕾舞蹈表演,真實美到極致
下午茶時間,悠然自得的休憩
充斥這繁華奢靡氣息的城市迪拜風景圖片
從山間到田野再到大海美麗的自然風景圖片
肉食主義者的最愛美食烤肉圖片
夏日甜心草莓美食圖片
人逢知己千杯少,喝酒搞笑圖集
搞笑試卷,學生惡搞答題
新聞熱點
疑難解答
圖片精選
Dictionary數據類型在Darwin視頻服
可穿戴手勢識別控制器
網友關注