求助刚才CF,D
  • 板块学术版
  • 楼主Chancylaser
  • 当前回复9
  • 已保存回复9
  • 发布时间2022/7/22 00:50
  • 上次更新2023/10/27 18:59:32
查看原帖
求助刚才CF,D
241817
Chancylaser楼主2022/7/22 00:50

WA at 3

#include<bits/stdc++.h>
using namespace std;
const int N=2e5+5;
int n,m;
int q;
int xs,ys,xe,ye;
int k;
int f[N][25];
int lg[N];
int main(){	
	cin>>n>>m;
	for(int i=1;i<=m;i++) cin>>f[i][0];
	cin>>q;
	
	for(int i=2;i<=m;i++) lg[i]=lg[i>>1]+1;
	

	
	for(int j=1;j<=lg[m];j++)
		for(int i=1;i<=m-(1<<j)+1;i++)
			f[i][j]=max(f[i][j-1],f[i+(1<<(j-1))][j-1]);

	while(q--){
		cin>>xs>>ys>>xe>>ye>>k;
		if(ys>ye) swap(xs,xe),swap(ys,ye);
		
		if(abs(ys-ye)%k!=0||abs(xs-xe)%k!=0){
			cout<<"NO\n";
			continue;
		}
		if(ys+k>m){
			cout<<"NO\n";
			continue;
		}
		
		int mid=abs(ye-ys)+1;
		int maxx=max(f[ys][lg[mid]],f[ye-(1<<lg[mid])+1][lg[mid]]);
		if(xs>maxx){
			cout<<"YES\n";
			continue;
		}	
	
		int wz=xs+k*((maxx-xs)/k+1);
		//cout<<wz<<endl;
		
		if(wz<=n) cout<<"YES\n";
		else cout<<"NO\n";
	}
	return 0;
}
2022/7/22 00:50
加载中...