求助刚才S组T1暴力
  • 板块学术版
  • 楼主FPXS11GO
  • 当前回复4
  • 已保存回复4
  • 发布时间2022/10/23 18:01
  • 上次更新2023/10/27 06:16:36
查看原帖
求助刚才S组T1暴力
570842
FPXS11GO楼主2022/10/23 18:01
#include<bits/stdc++.h>
using namespace std;
int n,m,vi;
struct node{
	int id,x,y,val;
	double xt;
}a;
long long tot,ans;
node k[500005];//最后造成伤害 
int s[500005],z[500005];//威力  
unordered_map<int,vector<node>>q;
unordered_map<int,vector<node>>::iterator it;
int ping(int x,int y,int v)
{	double xi;
	return xi=x+v*sqrt((2*y)/9.8);
	//else return xi=-(x+v*sqrt((2*y)/9.8));
}

bool pan(node a,node b){
	if(a.x<=b.x&&a.xt>=b.xt)return true;
	else return false;
}
bool cmp(node a,node b){
	return a.id<b.id;
}
bool cmp2(int a,int b){
	return a>b;
}
int main(){
	cin>>n>>m;
	
	for(int i=1;i<=n;i++)
	{	a.id=1;
		cin>>a.x>>a.y>>vi;
		a.xt=ping(a.x,a.y,vi);
		q[a.y].push_back(a);
	}
	for(it=q.begin();it!=q.end();it++)
	{
		for(int i=0;i<it->second.size();i++)
			for(int j=i;j<it->second.size();j++)
			{
				if(i==j)continue;
				if(pan(it->second[i],it->second[j]))
				{
					it->second[i].val++;
					it->second[j].val++;
				}
			}
	
	 } 
	for(it=q.begin();it!=q.end();it++)
	{
		for(int i=0;i<it->second.size();i++)
		{	tot++;
			k[tot].id=it->second[i].id;
			k[tot].val=it->second[i].val;
			ans+=it->second[i].val;
			}	
			
		}
	sort(k+1,k+1+n,cmp);
	for(int i=1;i<=n;i++)
	{
		cin>>s[i];
		z[i]=k[i].val-s[i];
		if(z[i]<0)z[i]=k[i].val;
		else z[i]=s[i];
	}
	sort(z+1,z+1+n,cmp2);
	//int tp=0;
	//cout<<ans<<endl;
	for(int i=1;i<=m;i++)
		ans-=z[i];
	cout<<ans<<endl;
	return 0;
}

第三个点就G了,求助

2022/10/23 18:01
加载中...