HDU1754 分塊入門1

2021-07-31 09:39:21 字數 650 閱讀 1091

題意:

單點更新,區間求最值;

思路:維護每個值 and 分塊,維護每塊的最值;

如果 x 和 y 隸屬於同一塊,那麼直接列舉就行;

如果它們不在同一塊,那麼中間的每一塊的最大值可以由數列 p[ ] 得到,其他x,y各自所在塊包含的元素直接列舉即可;

列舉塊數複雜度:sqrt(n);

列舉塊內元素複雜度:sqrt(n);

所以總的複雜度:m*(sqrt(n));

#includeusing namespace std;

typedef unsigned long long ull;

typedef long long ll;

const int n=2e5+10;

int n,blo,m;

int v[n],p[n],be[n];

void query(int left,int right)

for(int i=be[left]+1;i<=be[right]-1;i++)

ans=ans>p[i]?ans:p[i];

printf("%d\n",ans);

}void update(int pos,int val)

{ v[pos]=val;

p[be[pos]]=p[be[pos]]

線段樹入門 hdu1754

題目 很多學校流行一種比較的習慣。老師們很喜歡詢問,從某某到某某當中,分數最高的是多少。這讓很多學生很反感。不管你喜不喜歡,現在需要你做的是,就是按照老師的要求,寫乙個程式,模擬老師的詢問。當然,老師有時候需要更新某位同學的成績。input本題目包含多組測試,請處理到檔案結束。在每個測試的第一行,有...

LOJ 6277 數列分塊入門 1(分塊入門)

記憶體限制 256 mib時間限制 100 ms標準輸入輸出 題目型別 傳統評測方式 文字比較 上傳者 hzwer 提交 提交記錄 統計討論 3 測試資料 題目描述 給出乙個長為 n 的數列,以及 n 個操作,操作涉及區間加法,單點查值。輸入格式 第一行輸入乙個數字 n。第二行輸入 n 個數字,第 ...

LOJ 6277 數列分塊入門 1 (分塊)

給出乙個長為 nnn 的數列,以及 nnn 個操作,操作涉及區間加法,單點查值。分塊,每次更新的話對塊兩側不完整的地方暴力更新,對完整的塊內部分打標記,查詢時直接返回資料值和標記部分的值即可。include using namespace std typedef long long ll const...