题意:给定$n$个点,找一个点使得这个点到所有点的距离之和最小,求出这个最小距离


传说中的模拟退火…

#include<cstdio>
#include<ctime>
#include<cmath>
#include<cstdlib>
const int N=105;
struct point
{
double x,y;
}ps[N];
int n;
double t,ans,tans,tx,ty,nx,ny,temp; inline double get(int x){return 1.0*((rand()%x)*(rand()%x)%x);}
inline double sqr(double x){return x*x;}
inline double dis(double x,double y,point &p)
{
return sqrt(sqr(x-p.x)+sqr(y-p.y));
}
inline double calc(double x,double y)
{
double res=0;
for(register int i=1;i<=n;i++)res+=dis(x,y,ps[i]);
return res;
}
int main()
{
scanf("%d",&n);nx=ny=0;t=100000;
for(register int i=1;i<=n;i++)
{
scanf("%lf%lf",&ps[i].x,&ps[i].y);
nx+=ps[i].x;ny+=ps[i].y;
}
nx/=n;ny/=n;tans=ans=calc(nx,ny);
while(t>0.02)
{
tx=ty=0;
for(register int i=1;i<=n;i++)
{
tx+=(ps[i].x-nx)/dis(nx,ny,ps[i]);
ty+=(ps[i].y-ny)/dis(nx,ny,ps[i]);
}
temp=calc(nx+tx*t,ny+ty*t);
if(temp<ans)
{
tans=ans=temp;nx+=tx*t;ny+=ty*t;
}else if(log((temp-ans)/t)<get(10000)/10000.0)
{
ans=temp;nx+=tx*t;ny+=ty*t;
}
t*=0.9;
}
if(tans<ans)ans=tans;
printf("%.0lf",ans);
return 0;
}

_(:з」∠)_瞎调参数0ms过掉惹

[日常摸鱼]poj2420 A Star not a Tree?的更多相关文章

  1. poj2420 A Star not a Tree? 找费马点 模拟退火

    题目传送门 题目大意: 给出100个二维平面上的点,让你找到一个新的点,使这个点到其他所有点的距离总和最小. 思路: 模拟退火模板题,我也不懂为什么,而且一个很有意思的点,就是初始点如果是按照我的代码 ...

  2. poj-2420 A Star not a Tree?(模拟退火算法)

    题目链接: A Star not a Tree? Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 5219   Accepte ...

  3. Hash 日常摸鱼笔记

    本篇文章是Hash在信息学竞赛中的应用的学习笔记,分多次更新(已经有很多坑了) 一维递推 首先是Rabin-Karp,对于一个长度为\(m\)的串\(S\) \(f(S)=\sum_{i=1}^{m} ...

  4. [日常摸鱼]HDU1724 Ellipse-自适应Simpson法

    模板题~ QAQ话说Simpson法的原理我还是不太懂-如果有懂的dalao麻烦告诉我~ 题意:每次给一个椭圆的标准方程,求夹在直线$x=l$和$x=r$之间的面积 Simpson法 (好像有时候也被 ...

  5. [日常摸鱼]bzoj1257余数之和

    题意:输入$k,n$,求$\sum_{i=1}^n k \mod i$ $k \mod i=k-i*\lfloor \frac{k}{i} \rfloor $,$n$个$k$直接求和,后面那个东西像比 ...

  6. [日常摸鱼]bzoj1001狼抓兔子-最大流最小割

    题意就是求最小割- 然后我们有这么一个定理(最大流-最小割定理 ): 任何一个网络图的最小割中边的容量之和等于图的最大流. (下面直接简称为最大流和最小割) 证明: 如果最大流>最小割,那把这些 ...

  7. [日常摸鱼]pojKaka's Matrix Travels-拆点+最大费最大流

    方格取数的升级版,每个格子最多取一次. $k=1$的话就是个普及组的dp题,$k=2$就是在之前的基础上多加两维. 然而现在$k$太大了当然就不dp啦 对于$k=1$的情况我们还可以把$(i,j)$向 ...

  8. [日常摸鱼]loj6000「网络流 24 题」搭配飞行员

    题面 应该是二分图匹配,不过我写的是网络最大流. dinic求二分图最大匹配:加个源点和汇点,源点连向二分图的一边所有点,二分图的另一边所有点连向汇点,很明显这样得到的最大流就是这个二分图的最大匹配. ...

  9. [日常摸鱼]poj1741Tree-点分治

    还有两天就要去FJWC啦- 题意:一颗无根树,$k$为给定常数,求树上距离不超过$k$的点对的数量,多组数据,$n \leq 10^4$. 应该是点分治经典题~ 一般对于无根树我们都可以把它转变成有根 ...

随机推荐

  1. 接上一篇:(四) 控制反转(IOC)/ 依赖注入(DI)

    spring 核心功能:beans.core.context.expression Spring设计理念 Spring是面向Bean的编程 Spring三个核心组件(Core.Context.Bean ...

  2. P3694 邦邦的大合唱站队 题解

    \( 数据范围暗示状压,爪巴. \\ 首先考虑状态量. \\ 我们设计一个关于乐队数量的状态 S, 代表排列好的乐队.\\ \) eg: if(Set_排列好的队列 = {1, 2, 5}) then ...

  3. MySql学习笔记--详细整理--下

    目录 索引 测试索引 索引原则 权限管理和备份 备份 规范数据库设计 三大范式 JDBC JDBC程序 Statement对象 工具类实现 sql注入 PreparedStatement对象 事务 数 ...

  4. otter搭建

    转载: https://blog.csdn.net/inthat/article/details/93595156 https://www.cnblogs.com/Inspire-Yi/p/80943 ...

  5. 【数据结构】关于前缀树(单词查找树,Trie)

    前缀树的说明和用途 前缀树又叫单词查找树,Trie,是一类常用的数据结构,其特点是以空间换时间,在查找字符串时有极大的时间优势,其查找的时间复杂度与键的数量无关,在能找到时,最大的时间复杂度也仅为键的 ...

  6. 17_Android网络通信

    1. Android异步任务处理 在程序开启后,就会有一个主线程,负责与用户交互.如果在主线程中执行了耗时操作,那么界面就会停止响应,所以要将耗时操作转移到别的线程中. AsyncTask的用法,包括 ...

  7. 基于CefSharp开发(一)开发什么?没想好

    一.创建项目 创建WPF (.Net Core)项目 二.CefSharp引用 程序包管理器控制台引入CefSharp Install-Package CefSharp.Wpf -Version 85 ...

  8. socket阻塞与非阻塞,同步与异步,select,pool,epool

    概念理解 一.与I/O相关的五个重要概念 1. 第一个概念:用户空间与内核空间 1. 现在操作系统都是采用虚拟存储器,那么对32位操作系统而言,它的寻址空间(虚拟存储空间)为4G(2的32次方) 2. ...

  9. 第7.15节 Python中classmethod定义的类方法详解

    第7.15节  Python中classmethod定义的类方法详解 类中的方法,除了实例方法外,还有两种方法,分别是类方法和静态方法.本节介绍类方法的定义和使用. 一.    类方法的定义 在类中定 ...

  10. 手把手教你爬取B站弹幕!

    效果 输入要爬取的视频的BV号即可爬取该视频的弹幕. 过程 基本思路 基本的思路很简单,还是老步骤: 1.构造爬取的url 2.解析返回的数据 3.使用json或Xpath或正则表达式提取数据 4.保 ...