分塊真的是很暴力呀…
暴力查詢左端,暴力查詢又端點,中間整體部分直接 $o(1)$
求出。注意程式設計細節:belong[i]=(i−1)/block+1
,這樣可以保證序列被分成這樣的:
code:
#include#include#include#includeusing namespace std;const int maxn = 1000000;
const int inf = 100000000;
int n,m;
struct data_structrue
}
inline int query(int l,int r)
for(int i = belong[l] + 1;i < belong[r]; ++i) minn = min(minn, minv[i]); //中間部分直接查詢
return minn;
}}t;
int main()
return 0;
}
洛谷P1816 忠誠
老管家是乙個聰明能幹的人。他為財主工作了整整10年,財主為了讓自已賬目更加清楚。要求管家每天記k次賬,由於管家聰明能幹,因而管家總是讓財主十分滿意。但是由於一些人的挑撥,財主還是對管家產生了懷疑。於是他決定用一種特別的方法來判斷管家的忠誠,他把每次的賬目按1,2,3 編號,然後不定時的問管家問題,問...
倍增 rmq 忠誠 洛谷P1816
老管家是乙個聰明能幹的人。他為財主工作了整整10年,財主為了讓自已賬目更加清楚。要求管家每天記k次賬,由於管家聰明能幹,因而管家總是讓財主十分滿意。但是由於一些人的挑撥,財主還是對管家產生了懷疑。於是他決定用一種特別的方法來判斷管家的忠誠,他把每次的賬目按1,2,3 編號,然後不定時的問管家問題,問...
洛谷P1816 忠誠 線段樹
老管家是乙個聰明能幹的人。他為財主工作了整整10年,財主為了讓自已賬目更加清楚。要求管家每天記k次賬,由於管家聰明能幹,因而管家總是讓財主十分滿意。但是由於一些人的挑撥,財主還是對管家產生了懷疑。於是他決定用一種特別的方法來判斷管家的忠誠,他把每次的賬目按1,2,3 編號,然後不定時的問管家問題,問...