#10WA求调
查看原帖
#10WA求调
1175324
yzb714楼主2024/11/2 20:58

提交记录

#include<bits/stdc++.h>
using namespace std;
struct bi{
	int d,v,a;
}a[110000];
struct pi{
	int x,y;
}sp[110000];
int t,n,m,l,v,p[110000],g[1100000],maxx,ans1,ans2;
bool f[1100000];
int read()
{
	int x=1,num=0;
	char s=getchar();
	while(s<'0'||s>'9')
	{
		if(s=='-') x=-1;
		s=getchar();
	}
	while(s>='0'&&s<='9')
	{
		num=num*10+s-'0';
		s=getchar();
	}
	return num*x;
}
bool cmp(pi x,pi y)
{
	return x.y<y.y;
}
void fun()
{
	for(int i=1;i<=n;i++)
	{
		a[i].d=read();
		a[i].v=read();
		a[i].a=read();
	}
	for(int i=1;i<=m;i++)
	{
		p[i]=read();
		maxx=max(maxx,p[i]);
	}
	for(int i=1;i<=m;i++)
	  for(int j=p[i-1]+1;j<=p[i];j++)
		g[j]=i;
}
void overspeed()
{
	for(int i=1;i<=n;i++)
		{
			if(a[i].a==0)
			{
				if(a[i].v<=v||a[i].d>maxx) continue;
				else
				{
					ans1++;
					sp[ans1].x=g[a[i].d];sp[ans1].y=m;
				}
			}
			if(a[i].a<0)
			{
				if(a[i].v<=v||a[i].d>maxx) continue;
				else
				{
					long long ds;
					ds=(-(v-a[i].v)*(v+a[i].v))/(-2*a[i].a);
					if((-(v-a[i].v)*(v+a[i].v))%(-2*a[i].a)!=0) ds++;
					if(p[g[a[i].d]]<ds+a[i].d)
					{
						ans1++;
						sp[ans1].x=g[a[i].d];
						if(ds+a[i].d>maxx) sp[ans1].y=m;
						else sp[ans1].y=g[ds+a[i].d]-1;
					}
				}
			}
			if(a[i].a>0)
			{
				if(a[i].d>maxx) continue;
				if(a[i].v>v)
				{
					ans1++;
					sp[ans1].x=g[a[i].d];sp[ans1].y=m;
				}
				else
				{
					long long ds;
					ds=(v-a[i].v)*(v+a[i].v)/(2*a[i].a);
					if(ds+a[i].d<maxx)
					{
						ans1++;
						sp[ans1].x=g[a[i].d+ds];sp[ans1].y=m;
					}
				}
				
			}
		}
}
void least()
{
	sort(sp+1,sp+ans1+1,cmp);
	for(int i=1;i<=ans1;i++)
	{
		bool k=0;
		for(int j=sp[i].y;j>=sp[i].x;j--)
		  if(f[j])
		  {
		  	k=1;
		  	break;
		  }
		if(!k)
		{
			ans2++;
			f[sp[i].y]=1;
		}
	}
}
int main()
{
	//freopen("detect.in","r",stdin);
	//freopen("detect.out","w",stdout);
	scanf("%d",&t);
	while(t--)
	{
		ans1=0;ans2=0;maxx=0;
		memset(f,0,sizeof(f));
		scanf("%d %d %d %d",&n,&m,&l,&v);
		fun();
		overspeed();
		least();
		printf("%d %d\n",ans1,m-ans2);
	}
	return 0;
}

maxx变量是我考场上脑抽想出来的

2024/11/2 20:58
加载中...