社区讨论

求助刚才CF,D

学术版参与者 4已保存回复 9

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
9 条
当前快照
1 份
快照标识符
@lo8i41d6
此快照首次捕获于
2023/10/27 18:59
2 年前
此快照最后确认于
2023/10/27 18:59
2 年前
查看原帖
WA at 3
CPP
#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;
}

回复

9 条回复,欢迎继续交流。

正在加载回复...