暴力挂分求调
查看原帖
暴力挂分求调
524369
netlify楼主2024/10/27 15:41

要寄了,本来以为能拿60pts,实际上只能拿40pts

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+1;
int n,m,L,V,b[N];
int d[N],a[N],v[N];
bool tag[3001][3001];
int cnt[3001],ans1,ans2;
long double gets(int i,int s){
	return sqrt(v[i]*v[i]+2*a[i]*(s-d[i]));
}
void Onm(){
	ans1=0,ans2=m;
	memset(cnt,0,sizeof(cnt));
	memset(tag,0,sizeof(tag));
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++)
			if(d[i]<=b[j]&&gets(i,b[j])>V){
				cnt[i]++;
				tag[i][j]=1;
			}
	for(int i=1;i<=n;i++)if(cnt[i])ans1++;
	for(int j=1;j<=m;j++){
		int flag=1;
		for(int i=1;i<=n;i++)
			if(tag[i][j]==1&&cnt[i]==1){
				flag=0;
				ans2--;
				break;
			}
		if(flag==1){
			for(int i=1;i<=n;i++)
				if(tag[i][j]==1)cnt[i]--;
		}
	}cout<<ans1<<" "<<ans2<<"\n";
}
void solve(){
	cin>>n>>m>>L>>V;
	for(int i=1;i<=n;i++)
		cin>>d[i]>>v[i]>>a[i];
	for(int i=1;i<=m;i++)
		cin>>b[i];
	if(n<=3000)Onm();
}
int main(){
	ios::sync_with_stdio(0);
	cin.tie(0),cout.tie(0);
	int T;
	cin>>T;
	while(T--)solve();
	return 0;
}
2024/10/27 15:41
加载中...