20求调
查看原帖
20求调
797763
lishengkai楼主2024/1/9 20:03
#include<bits/stdc++.h>
using namespace std;
int n,m;
long long sx,sy;
bool b[1001];//b[i]用来标记第i头牛有没有找到座位
struct cow
{
	long long cx,cy;
}a[1001];
int main()
{
	cin>>n>>m;
	if(n<=m)//如果奶牛数大于座位数,那么每头牛都能分配到座位
	{
		cout<<0;
		return 0;
	}
	for(int i=1;i<=n;++i)
		cin>>a[i].cx>>a[i].cy;
	for(int i=1;i<=m;++i)
	{
		cin>>sx>>sy;
		long long mn=1e15;
		int mnid=0;
		//mn保存最小值,mnid保存牛编号
		for(int j=1;j<=n;++j)
		{
			if(!b[j])//如果当前牛找到了座位,则不做这一轮循环
			{
				long long dis=sqrt((a[j].cx-a[j].cy)*(a[j].cx-a[j].cy)+(sx-sy)*(sx-sy));//求出最短距离
				if(dis<mn)//更新当前座位坐的牛
				{
					mn=dis;
					mnid=j;
				}
			//因为j是按输入顺序枚举的,所以不用判断c==mn的条件
			}
		}
		b[mnid]=true;//标记有了座位的牛
	}
	for(int i=1;i<=n;++i)//输出没有座位的牛的编号
		if(!b[i])
			cout<<i<<'\n';
	return 0;
}
2024/1/9 20:03
加载中...