求调CF的D,先跳至顶端,ST表维护最高障碍
  • 板块学术版
  • 楼主LazYQwQ
  • 当前回复9
  • 已保存回复9
  • 发布时间2022/7/22 09:08
  • 上次更新2023/10/27 18:58:54
查看原帖
求调CF的D,先跳至顶端,ST表维护最高障碍
251870
LazYQwQ楼主2022/7/22 09:08
#include<bits/stdc++.h>
using namespace std;
int n,m,q;
int h[200020];
int f[200020][20];
void pre_ST(){
	int t=log2(m);
	for(int i=1;i<=t;i++){
		for(int j=1;j+(1<<i)-1<=m;j++){
			f[j][i]=max(f[j][i-1],f[j+(1<<(i-1))][i-1]);
		}
	}
}
int ST_que(int l,int r){
	int t=log2(r-l+1);
	return max(f[l][t],f[r-(1<<t)+1][t]);
}
int main(){
	cin>>n>>m;
	for(int i=1;i<=m;i++)cin>>h[i];
	for(int i=1;i<=m;i++)f[i][0]=h[i];
	pre_ST();
	cin>>q;
	while(q--){
		bool flag=0;
		int x1,x2,y1,y2,k;
		cin>>y1>>x1>>y2>>x2;
		cin>>k;
		y1+=(n-y1)/k*k; 
		y2+=(n-y2)/k*k;
		if(y1==y2){
			if(x1>x2)swap(x1,x2); 
			if(y1<=ST_que(x1,x2))
			flag=1;
		}
		else flag=1;
		if(abs(x2-x1)%k!=0)flag=1;
		if(flag==0)cout<<"YES"<<endl;
		else cout<<"NO"<<endl;
	}
} 
2022/7/22 09:08
加载中...