⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 2536.cpp

📁 这些是我到目前在PKU上做出的题目
💻 CPP
字号:
#include <memory.h>
#include <stdio.h>
#define LEFT_MAX 101
#define RIGHT_MAX 101

bool useif[RIGHT_MAX];
int link[RIGHT_MAX];
int left_num,right_num,distance;
float left_X[LEFT_MAX],left_Y[LEFT_MAX],right_X[RIGHT_MAX],right_Y[RIGHT_MAX];
int array[LEFT_MAX][RIGHT_MAX];

bool can(int t)
{
	int i;
	
	for(i=0;i<right_num;i++)
	{
        if(array[t][i]==-1)
        {
            if((left_X[i]-right_X[t])*(left_X[i]-right_X[t])+(left_Y[i]-right_Y[t])*(left_Y[i]-right_Y[t])<=distance*distance)
                array[t][i]=1;
            else
                array[t][i]=0;
        }
		if(!useif[i]&&array[t][i])
		{
			useif[i]=true;
			if(link[i]==-1||can(link[i]))
			{
				link[i]=t;
				return true;
			}
		}

	}
	return false;
}

int main()
{
	int i,k,num,temp,day,course,s,v;
	
	while(scanf("%d\n",&left_num)!=-1)
	{
        	scanf("%d %d %d",&right_num,&s,&v);
        	distance=s*v;
		memset(link,0xFF,sizeof(link));
		memset(array,0xFF,sizeof(array));
        	memset(useif,0,sizeof(useif));
		
		num=0;
		
		for(i=0;i<left_num;i++)
		{
			scanf("%f %f",&left_X[i],&left_Y[i]);
		}
        	for(i=0;i<right_num;i++)
		{
			scanf("%f %f",&right_X[i],&right_Y[i]);
		}
		for(i=0;i<left_num;i++)
		{
			memset(useif,0,sizeof(useif));
			if(can(i))
				num++;
		}
		printf("%d\n",left_num-num);
		
	}
	return 0;
} 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -