loj 6278 數列分塊入門 2

2022-08-01 17:18:09 字數 731 閱讀 6729

題目:傳送門

簡要題意:

給出乙個長為 n的數列,以及 n個操作,操作涉及區間加法,詢問區間內小於某個值 x的元素個數。

題解:分塊之後直接就分情況暴力了啊:

先列舉頭,再列舉尾,中間的塊之間二分求位置(當然了,預處理就要排序一下)

**:

1 #include2 #include3 #include4 #include5 #include6 #include7

using

namespace

std;

8int n,a[51000],ba[51000];9

int block,pos[51000

];10 vector v[510

];11

void reset(int

x)12

18void update(int l,int r,int

c)19

28void sol(int l,int r,int

c)29

41 printf("

%d\n

",ans);42}

43int

main()

4448

for(int i=1;i<=pos[n];i++)sort(v[i].begin(),v[i].end());

49for(int i=1;i<=n;i++)

5056

return0;

57 }

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...