#3WA求调
查看原帖
#3WA求调
598641
yangjinghan楼主2024/11/12 21:42
#include<bits/stdc++.h>
using namespace std;
struct AF{
	int l,r;
}af[100002];
bool cmp1(AF a,AF b){
	return a.r!=b.r?a.r<b.r:a.l<b.l;
}
int az[100002],p[100002];
signed main(){
	p[0]=-1;
	int t;
	scanf("%d",&t);
	while(t--){
		int n,m,l,vm,vf;
		scanf("%d%d%d%d",&n,&m,&l,&vm);
		vf=vm*vm;
		int d,v,a,cntf=0,cntz=0,r;
		for(register int i=0;i<n;++i){
			scanf("%d%d%d",&d,&v,&a);
			if(v>vm){
				if(a<0){
					v=vf-v*v;
					a<<=1;
					r=d+v/a-(v%a==0);
					if(r<l)af[cntf++]=(AF){d,r};
					else az[cntz++]=d;
				}else az[cntz++]=d;
			}else if(a>0){
				if(v<vm){
					d+=(vf-v*v)/(a<<=1);
					if(d<l)az[cntz++]=d+1;
				}else az[cntz++]=d+1;
			}
		}
		sort(af,af+cntf,cmp1);
		int ansf=0,cntp=0,pl=0,pr;
		for(register int i=1;i<=m;++i)scanf("%d",p+i);
		for(register int i=0;i<cntf;++i){
			if(af[i].l<=p[pl])++ansf;
			else{
				pr=upper_bound(p+1,p+m+1,af[i].r)-p-1;
				if(af[i].l<=p[pr]){
					++ansf;
					++cntp;
					pl=pr;
				}
			}
		}
		sort(az,az+cntz);
		int ansz=upper_bound(az,az+cntz,p[m])-az;
		printf("%d %d\n",ansf+ansz,m-cntp-(p[pl]<az[ansz-1]));
	}
	return 0;
}
2024/11/12 21:42
加载中...