Vijos1212 Way Selection [2017年6月计划 二分图03]
2024-10-08 00:59:00
Way Selection
背景
小杉家族遭遇了前所未有的大危机
他想知道怎么逃生
描述
小杉家族r个人正在一片空地上散步,突然,外星人来了……
留给小杉家族脱逃的时间只有t秒,每个小杉都有一个跑的速度v
总共有a个传送点,小杉们必须在t秒内到达传送点才能脱逃
另外一个小杉进入一个传送点以后,该传送点就会消失
现在请你安排一种方案,使脱逃的小杉尽可能的多
格式
输入格式
每组测试数据的
第一行有三个整数r和a和t(0<a,r,t<=1000)
第二行有a对实数,第i对数表示第i个传送点的坐标,这些坐标绝对值均不超过1e6
接下来r行,每行有三个实数x,y,v,表示第i个小杉的坐标和奔跑的速度
输出格式
对每组测试数据输出一行
仅有一个整数s
表示最多有多少个小杉能成功脱逃
样例1
样例输入1
1 1 1
1 1
1 1 1
样例输出1
1
限制
每个测试点1s
提示
简单的很,别想复杂了
来源
lolanv
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <cmath>
inline void read(int &x){x = ;char ch = getchar();char c = ch;while(ch > '' || ch < '')c = ch, ch = getchar();while(ch <= '' && ch >= '')x = x * + ch - '', ch = getchar();if(c == '-')x = -x;}
const int MAXN = + ; int g[MAXN][MAXN],by[MAXN],lk[MAXN];
int r,a,t,ans;
double x[MAXN],y[MAXN],v[MAXN],xx[MAXN],yy[MAXN]; int find(int v)
{
for(int i = ;i <= a;i ++)
{
if(!by[i] && g[v][i])
{
by[i] = ;
if((!lk[i]) || find(lk[i]))
{
lk[i] = v;
return ;
}
}
}
return ;
} int main()
{
read(r);read(a);read(t);
for(int i = ;i <= a;i ++)
scanf("%lf %lf", &x[i], &y[i]);
for(int i = ;i <= r;i ++)
scanf("%lf %lf %lf", &xx[i], &yy[i], &v[i]);
for(int i = ;i <= a;i ++)
{
for(int j = ;j <= r;j ++)
{
g[j][i] = (sqrt((x[i] - xx[j]) * (x[i] - xx[j]) + (y[i] - yy[j]) * (y[i] - yy[j])) <= v[j] * t);
}
}
for(int i = ;i <= r;i ++)
{
memset(by, , sizeof(by));
if(find(i))ans ++;
}
printf("%d", ans);
return ;
}
最新文章
- git使用简单教程
- Atitit selenium3 新特性
- java入门基础知识点总结
- 【转】一个非常常见但容易被忽略的c++问题——用IPML模式可以解决
- python调用windows api
- [原创]Scala学习:for,function,lazy
- Content Providers详解
- web前端技术归类
- 面试题 ARC
- [认证授权] 4.OIDC(OpenId Connect)身份认证授权(核心部分)
- selenium webdriver使用click一直失效问题的几种解决方法
- TZOJ 5694 区间和II(树状数组区间加区间和)
- ES6和ES5变量声明的区别(var let const)
- TCP/IP学习20180630-数据链路层-router choose
- Python中字典和集合的用法
- Confluence 6 配置边栏
- SVG 学习<;五>; SVG动画
- CSS只是进化的一部分
- [转]webMethods公司简介
- Activity的setResult方法