90,WA on #3,求调
查看原帖
90,WA on #3,求调
685931
CSQ7楼主2024/9/15 23:28

WA on #3,求助:

#include <bits/stdc++.h>
using namespace std;
int n,m;
struct monitor{
	int x,t,lab;
}a[100010];
int dy[100010];
int turn[100010],size=0;
bool cmp(monitor p,monitor q){
	return p.t<q.t;
}
int mxv[100010],mxv2[100010],locmx[100010];
int mx,mx2,lmx;
int upp(int k){
	int l=0,r=size;
	while(l<r){
		int mid=(l+r)/2;
		if(turn[mid]>=k)r=mid;
		else l=mid+1;
	}
	return r;
}
int up(int k){
	int l=0,r=n;
	while(l<r){
		int mid=(l+r)/2;
		if(a[mid].t>=k)r=mid;
		else l=mid+1;
	}
	return r;
}
int getvv(int i,int k){
	if(k==locmx[i])return mxv2[i];
	else return mxv[i];
}
int getv(int k){
	if(k>size)return 1919810;
	if(k==lmx)return mx2;
	else return mx;
}
int getanss(int u,int v){
	int at=upp(u);
	if(u==turn[at]&&u!=n){
		return max(min(getv(at),getv(at+1)),min(getvv(at,u),getvv(at+1,u+1)));
	}
	else{
		return max(getv(at),getvv(at,u));
	}
}
int getans(int u,int v){
	int an=getanss(u,v);
	int k=up(v);
	an=max(an,abs((a[k-1].x-a[u].x)/(a[k-1].t-v)));
	an=max(an,abs((a[k].x-a[u].x)/(a[k].t-v)));
	an=max(an,abs((a[u-1].x-a[u+1].x)/(a[u-1].t-a[u+1].t)));
	return an;
}
int main(){
	cin>>n>>m;
	a[0].x=-1e9,a[0].t=-1;
	for(int i=1;i<=n;i++){
		cin>>a[i].x>>a[i].t;
		a[i].lab=i;
	}
	n++;
	a[n].x=0,a[n].t=1e7,a[n].lab=n;
	sort(a+1,a+1+n,cmp);
	for(int i=1;i<=n;i++){
		dy[a[i].lab]=i;
	}
	turn[++size]=1;
	for(int i=2;i<n;i++){
		if(a[i-1].x<=a[i].x&&a[i].x>=a[i+1].x||a[i-1].x>=a[i].x&&a[i].x<=a[i+1].x){
			turn[++size]=i;
		}
	}
	turn[++size]=n;
	for(int i=2;i<=size;i++){
		for(int j=turn[i-1]+1;j<=turn[i];j++){
			int v=(a[j].x-a[j-1].x)/(a[j].t-a[j-1].t);
			v=abs(v);
			if(mxv[i]<=v)mxv2[i]=mxv[i],mxv[i]=v,locmx[i]=v;
			else mxv2[i]=max(mxv2[i],v);
		}
	}
	for(int i=1;i<=size;i++){
		if(mxv[i]>=mx)mx2=mx,mx=mxv[i],lmx=i;
		else mx2=max(mx2,mxv[i]);
		if(mxv2[i]>=mx)mx2=mx,mx=mxv2[i],lmx=i;
		else mx2=max(mx2,mxv2[i]);
	}
	for(int i=1;i<=m;i++){
		int u,v;
		cin>>u>>v;
		if(a[dy[u]].t==v)cout<<mx<<endl;
		else cout<<getans(dy[u],v)<<endl;
	}
	return 0;
} 
2024/9/15 23:28
加载中...