CodeForces 617C Watering Flowers
2024-10-19 02:20:39
无脑暴力题,算出所有点到圆心p1的距离的平方,从小到大排序。
然后暴力枚举p1的半径的平方,计算剩余点中到p2的最大距离的平方,枚举过程中记录答案
#include<cstdio>
#include<cstring>
#include<vector>
#include<cmath>
#include<queue>
#include<list>
#include<algorithm>
using namespace std; const int maxn=+;
struct point
{
long long x,y;
long long len2;//与圆心p1的距离的平方
}p[maxn],p1,p2;
int n; long long Len2(point a,point b)
{
return (a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y);
} bool cmp(const point&a,const point&b)
{
return a.len2<b.len2;
} int main()
{
scanf("%d",&n);
scanf("%lld%lld",&p1.x,&p1.y);
scanf("%lld%lld",&p2.x,&p2.y); for(int i=;i<n;i++) scanf("%lld%lld",&p[i].x,&p[i].y);
for(int i=;i<n;i++) p[i].len2=Len2(p1,p[i]); long long ans=-;
sort(p,p+n,cmp); for(int i=;i<n;i++)
{
long long Max=;
for(int j=i+;j<n;j++)
Max=max(Max,Len2(p2,p[j]));
if(ans==-) ans=Max+p[i].len2;
else ans=min(ans,Max+p[i].len2);
}
long long Max=;
for(int i=;i<n;i++)
Max=max(Max,Len2(p2,p[i]));
ans=min(ans,Max);
printf("%lld\n",ans);
return ;
}
最新文章
- 理解java虚拟机内存分配堆,栈和方法区
- First glance in Go
- WCF报 当前已禁用此服务的元数据发布的错误
- 正则过滤html标签
- QT 设置SizePolicy的例子(简单明了)
- 【小练习01】CSS--PS提示框制作
- git的一些基本命令
- Spring学习笔记5——注解方式AOP
- Docker之进入容器(三)
- MongoDB安全使用指引
- ES6 块级作用域
- Spark新手入门——3.Spark集群(standalone模式)安装
- 在代码中设置RelativeLayout布局中标签的android:layout_toLeftOf、android:layout_toRightOf等属性
- [转]单据套打WINFORM实现,带预览功能
- LeetCode 70. Climbing Stairs爬楼梯 (C++)
- Knockout: 实践CSS绑定和afterkeydown事件, 给未通过校验的输入框添加红色边框突出显示; 使用afterkeydown事件自动将输入转大写字母.
- 破解Linux系统root用户密码
- linux 安全狗安装问题
- Java入门:注册模块的实现
- 在小红家里面,有n组开关,触摸每个开关,可以使得一组灯泡点亮。