题意:
分析:
第一反应是SNOI2017炸弹
这个题我们一看需要对于每一个数都输出一次答案,也就是说我们需要 l o g log log 或者 n \sqrt n n 的复杂度查询每一个点,那么我们思考一下就发现可以通过倍增处理
但是由于这个题每个点能扩展的范围是不一样的,所以倍增迭代时我们需要通过区间查询,找到能向左 (向右) 扩展的最远点坐标,也就是说我们需要一个支持区间操作的数据结构,线段树或者ST表都可以,这里给出ST表的代码
代码:
#include<bits/stdc++.h>
using namespace std;
namespace zzc
{
int read(){
int x=0,f=1;char ch=getchar();
while(!isdigit(ch)){
if(ch=='-') f=-1;ch=getchar();
}
while(isdigit(ch)){
x=(x<<1)+(x<<3)+ch-48;
ch=getchar();
}
return x*f;
}
const int maxn = 3e5+5;
int log