为什么本蒻蒟才70分
查看原帖
为什么本蒻蒟才70分
947042
wangkelin123楼主2024/11/3 18:07
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5;
int T,n,m,L,V,cnt,ans,tot;
int d[N],v[N],a[N],p[N];
struct S{
	int l,r;
}s[N];
bool cmp(S x,S y){
	if(x.r==y.r)return x.l<y.l;
	return x.r<y.r;
}
int main(){
	cin>>T;
	while(T--){
		cin>>n>>m>>L>>V;
		tot=0;
		for(int i=1;i<=n;i++)
			cin>>d[i]>>v[i]>>a[i];
		for(int i=1;i<=m;i++)
			cin>>p[i];
		for(int i=1;i<=n;i++){
			if(a[i]<=0&&v[i]<=V)
				continue;
			int pos=lower_bound(p+1,p+m+1,d[i])-p;
			if(a[i]>0){
				int l=pos,r=m,Ans=0;
				while(l<=r){
					int mid=l+r>>1;
					if(v[i]*v[i]+2*a[i]*(p[mid]-d[i])>V*V){
						r=mid-1;
						Ans=mid;
					}else l=mid+1;
				}
				if(Ans!=0)
					s[++tot]=S{Ans,m};
			}else{
				int l=pos,r=m,Ans=0;
				while(l<=r){
					int mid=l+r>>1;
					if(v[i]*v[i]+2*a[i]*(p[mid]-d[i])>V*V){
						l=mid+1;
						Ans=mid;
					}else r=mid-1;
				}
				if(Ans!=0)
					s[++tot]=S{pos,Ans};
			}
		}
		sort(s+1,s+tot+1,cmp);
		int x=s[1].r,cnt=1;
		for(int i=1;i<=tot;i++){
			if(s[i].l>x){
				cnt++;
				x=s[i].r;
			}
		}
		cout<<tot<<' '<<m-cnt<<'\n';
	}
	return 0;
}

请教下各位大佬,这个代码哪里出问题了?

这是我按老师的方法写的,似乎没问题

2024/11/3 18:07
加载中...