HDU 1109 Run Away
题目大意:给一个矩阵的长宽,再给n个点,求矩阵区域内某个点到各个点的最小距离的最大值,输出所求点的坐标
这道题我还是写了随机化乱搞,不过由于比较懒于是就没有写模拟退火,不过也是可以AC的
我们先初始随机一个坐标并算出它的答案,然后每一次择情况随机一个步长(这个要随着时间的推移慢慢变小),然后随机角度得到新的点坐标。
同时我们计算出新的点的答案然后和当前的答案比对一下,如果更优就选择即可。
注意一下:这不是模拟退火,真正的模拟退火还是有一个概率接受较差解的过程的,而且是根据老天爷的规律得出的,因此比较科学。
还是一句老话,脸黑就多rand几次,一般来说没什么大问题就过了
CODE
#include<cstdio>
#include<cctype>
#include<cstring>
#include<cstdlib>
#include<ctime>
#include<cmath>
using namespace std;
typedef double DB;
const DB EPS=1e-3,dlt=0.85,pi=acos(-1.0);
const int N=1005,EXP=10000;
struct Point
{
DB x,y;
}a[N],ans;
int t,n; DB X,Y,mx;
inline DB random(DB l,DB r)
{
return (DB)(rand()%EXP)/EXP*(r-l)+l;
}
inline DB min(DB a,DB b)
{
return a<b?a:b;
}
inline DB dis(Point A,Point B)
{
return (DB)sqrt((A.x-B.x)*(A.x-B.x)+(A.y-B.y)*(A.y-B.y));
}
inline DB calc(Point s)
{
DB d=dis(s,a[1]);
for (register int i=2;i<=n;++i)
d=min(d,dis(s,a[i])); return d;
}
inline DB Simulate_Anneal(Point &s)
{
DB d=calc(s),step=X>Y?X:Y;
while (step>EPS)
{
for (register int i=1;i<=50;++i)
{
DB angle=random(0,2*pi),x=s.x+cos(angle)*step,y=s.y+sin(angle)*step;
if (x>=0&&x<=X&&y>=0&&y<=Y&&calc((Point){x,y})>d) s=(Point){x,y},d=calc(s);
}
step*=dlt;
}
return d;
}
int main()
{
register int i; srand(time(0)); scanf("%d",&t);
while (t--)
{
scanf("%lf%lf%d",&X,&Y,&n); mx=0;
for (i=1;i<=n;++i)
scanf("%lf%lf",&a[i].x,&a[i].y);
for (i=1;i<=50;++i)
{
Point P=(Point){random(0,X),random(0,Y)};
DB d=Simulate_Anneal(P); if (d>mx) mx=d,ans=P;
}
printf("The safest point is (%.1lf, %.1lf).\n",ans.x,ans.y);
}
return 0;
}
HDU 1109 Run Away的更多相关文章
- HDU 1109
http://acm.hdu.edu.cn/showproblem.php?pid=1109 一个范围内给一堆点,求到这些点的最短距离最大 模拟退火,温度是步长 #include <iostre ...
- HDU 5365 Run
题意:给n个整点,问用其中若干个做顶点能够成多少个正三角形或正四边形或正五边形或正六边形. 解法:出题人说 地球人都知道整点是不能构成正五边形和正三边形和正六边形的,所以只需暴力枚举四个点判断是否是正 ...
- 【HDOJ】1109 Run Away
基础模拟退火. /* poj 1379 */ #include <iostream> #include <cstdio> #include <cstdlib> #i ...
- hdu 5365 Run(BC 50 B题)(求四边形的个数)
本来准备睡觉.结果还是忍不住想把它A了.由于已经看了题解了, 题意:就是给你一些坐标.都是整数,求一些正多边形的数目,官方题讲解是地球人都知道整数坐标构不成正三角形.正五边形和正六边形的... 然而我 ...
- ACM计算几何题目推荐
//第一期 计算几何题的特点与做题要领: 1.大部分不会很难,少部分题目思路很巧妙 2.做计算几何题目,模板很重要,模板必须高度可靠. 3.要注意代码的组织,因为计算几何的题目很容易上两百行代码,里面 ...
- 洛谷P1464 Function HDU P1579 Function Run Fun
洛谷P1464 Function HDU P1579 Function Run Fun 题目描述 对于一个递归函数w(a,b,c) 如果a≤0 or b≤0 or c≤0就返回值11. 如果a> ...
- hdu 1331 Function Run Fun
Problem Description We all love recursion! Don't we? Consider a three-parameter recursive function w ...
- HDU 1331 Function Run Fun(记忆化搜索)
Problem Description We all love recursion! Don't we? Consider a three-parameter recursive function w ...
- BestCoder Round #50 (div.1) 1002 Run (HDU OJ 5365) 暴力枚举+正多边形判定
题目:Click here 题意:给你n个点,有多少个正多边形(3,4,5,6). 分析:整点是不能构成正五边形和正三边形和正六边形的,所以只需暴力枚举四个点判断是否是正四边形即可. #include ...
随机推荐
- Tsung CentOS 操作系统下搭建tsung性能测试环境_Part 2
CentOS 操作系统下搭建tsung性能测试环境_Part 2 by:授客 QQ:1033553122 --------------------接CentOS 操作系统下搭建tsung性能测试环境_ ...
- 《ASP.NET MVC企业实战》(三)MVC开发前奏
在上一篇“<ASP.NET MVC企业级实战>(二)MVC开发前奏”中跟随作者大概了解了一些C#3.0和3.5中的新特性.本篇继续以这样的方式来学习C#中的一些特性. 一.C#3. ...
- 洗礼灵魂,修炼python(44)--巩固篇—反射之重新认识hasattr,gettattr,setattr,delattr
不急着进入正题.先动手完成一个小程序: 设计一套简单的服务开启关闭程序,每次开启或关闭都得打印服务当前的状态: class Server(object): def __init__(self): se ...
- python第九十天----jquery
jQuery http://jquery.cuishifeng.cn/ 相当于js的模块,类库 DOM/BOM/JavaScript的类库 一.查找元素 jQuery 选择器 直接找到某个或者某个标签 ...
- nslookup debug
Try adding forwarders to some public DNS servers leave the box ticked which says use root hints if f ...
- Oracle SQL: DDL DML DCL TCL
Data Definition Language 自带commit,与表结构有关(数据字典)(会等待对象锁) Data Manipulation Language (数据文件相关变化有关,会产生锁)不 ...
- 阵列卡raid H730写策略write-through和write-back配置说明
问题描述: 最近公司新进了测试服务器,但是在做阵列的时候忘记写策略里面的配置意思了 就网上查了一下,然后顺便做个笔记记录一下 write-through 数据在写入存储的同时,要写入缓存,这种方式安全 ...
- iris数据集(.csv .txt)免费下载
我看CSDN下载的iris数据集都需要币,我愿意免费共享,希望下载后的朋友们给我留个言 分享iris数据集(供学习使用): 链接: https://pan.baidu.com/s/1Knsp7zn-C ...
- Java设计模式之九 ----- 解释器模式和迭代器模式
前言 在上一篇中我们学习了行为型模式的责任链模式(Chain of Responsibility Pattern)和命令模式(Command Pattern).本篇则来学习下行为型模式的两个模式, 解 ...
- 面转栅格之ERROR 999999:执行函数时出错
今天进行矢量面转栅格的操作时,总是出现ERROR 999999:执行函数时出错,如下图所示: 刚开始以为是栅格保存的路径太长的问题,后来发现是矢量面的路径问题,我的矢量面是放在自建的图层组下面,如下图 ...