成都金铭 网站建设page怎么打开wordpress
2023年CSP-X初赛真题及答案解析(20)
20. (综合题,15分)
完善程序:求区间最值
给定序列an,你需要回答q次询问,每次询问一个区间[l,r]内的最大值与最小值之差。
数据范围满足n,q<=100000,1<=l<=r<=n,ai<=1000000。
提示:每次询问暴力去求区间最值很显然超时,因此我们采用分块算法,分块算法如下:
1、分块:将序列分成等长的根号n块,其中每块长度也为根号n,预处理并记录每个元素所属的块以及每块的左右端点下标、最大值和最小值。
2、查询:如果查询区间在同一块内,则暴力扫描统计区间最大最小值;否则,如果查询区间包含多个块,统计除去头尾两个块的中间每个块的已经维护好的最大最小值,然后再暴力统计左端点所在块以及右端点所在块的最大最小值。
#include<bits/stdc++h>
using namespace std