傳送門:loj#6278 數列分塊入門2
題意:給出乙個長為n的數列,以及n個操作,操作涉及區間加法,詢問區間內小於某個值x的元素個數。
為了確保更快地找到區間內小於某個值x的元素個數,對序列進行排序,使得塊內元素有序。每次操作完畢,只需對殘缺塊進行重排。因為對殘缺塊整體加,可能會破壞完整塊的有序性;而對整個塊加法,不會改變其有序性,所以沒必要重排。詢問過程完整塊二分詢問,殘缺塊暴力列舉。更詳細的請參見**1(預處理就是排序).
有趣的發現:還有一種不用排序的做法,效率似乎更高——預處理完整塊的最值。
詢問時,對殘缺塊,暴力列舉;
對完整塊,<1>如果塊的最大值小於x,那麼整個塊都小於x,ans+=block;
<2>如果塊的最小值大於等於x,那麼整個塊都大於等於x,ans+=0,
<3>其他情況,對整個塊進行暴力列舉。
更詳細的請參見**2(預處理就是求塊的最值).
**1和**2運**況對比:
LOJ 6278 數列分塊入門 2
題意 給出乙個長為 n 的數列,以及 n個操作,操作涉及區間加法,詢問區間內小於某個值 x的元素個數。思路 這裡有兩種操作,一種是區間加法,這在上一部落格已經介紹過了,不會的戳這裡,還有一種是區間查詢,因為每次查詢的數字都是不一樣的,所以要想時間最優化,必須要排序,因為排序後的查詢操作可以達到log...
loj 6278 數列分塊入門 2
題目 區間修改,詢問區間小於c的個數。分塊排序,用vector。至於那個塊的大小,好像要用到均值不等式 我不太會。就開始乙個個試,發現siz sqrt n 4時最快!明天去學一下算分塊複雜度的方法。include include include include include using names...
LOJ 6278 數列分塊入門 2
記憶體限制 256 mib時間限制 500 ms標準輸入輸出 題目型別 傳統評測方式 文字比較 上傳者 hzwer 提交提交記錄 統計討論 測試資料 題目描述 給出乙個長為 nnn 的數列,以及 nnn 個操作,操作涉及區間加法,詢問區間內小於某個值 的元素個數。輸入格式 第一行輸入乙個數字 nnn...