#include <bits/stdc++.h>
#define int long long
using namespace std;
int T,n,m,L,V,d[100001],v[100001],a[100001],p[100001],flag[100001],ans11[21];
signed main(){
cin >> T;
while(T--){
int ans1=0,ans2=0;
cin >> n >> m >> L >> V;
for(int i=1;i<=n;i++){
flag[i]=0;
cin >> d[i] >> v[i] >> a[i];
if(v[i]<=V && a[i]<=0)flag[i]=1;
}
for(int i=1;i<=m;i++)cin >> p[i];
for(int i=1;i<=n;i++){
if(flag[i]==0){
if(d[i]>p[m])flag[i]=1;
if(d[i]<p[m] && a[i]<=0)flag[i]=1;
if(d[i]==p[m] && v[i]>V)flag[i]=0;
if(d[i]==p[m] && v[i]<=V)flag[i]=1;
if(d[i]<p[m] && a[i]>=0 && v[i]>V)flag[i]=0;
if(d[i]<p[m] && a[i]>0){
if(v[i]>=V)flag[i]=0;
else{
double t=(V-v[i])/a[i];
double s=v[i]*t+0.5*a[i]*t*t;
double tmp=d[i]+s;
if(tmp>=p[m])flag[i]=1;
else flag[i]=0;
}
}
if(d[i]<p[m] && a[i]<0 && v[i]>V){
double s=(V*V-v[i]*v[i])/(2*a[i]);
double tmp=d[i]+s;
for(int j=1;j<=m;j++){
if(p[j]>=d[i] && p[j]<tmp)flag[i]=0;
}
}
}
}
for(int i=1;i<=n;i++)
if(flag[i]==0)
ans1++;
cout << ans1 << " ";
}
return 0;
}
第一问已经写好了,第二问不会
只要暴力思路就行