📄 2536.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 + -