点此看题面

大致题意: 一个平面上有 n n n个点,每个点有1个权值,现在要选择平面上的一个点,使这 n n n个点的权值乘上到达选定点的距离之和最小。


模拟退火

我们可以用模拟退火来做这道题。

L i n k Link Link

模拟退火详见博客模拟退火,随机化下的贪心

先将 ( 0 , 0 ) (0,0) (0,0)设定为答案,随后不断选取一个新的坐标,比较选择该点时的代价与当前答案的代价。若小于当前答案的代价,则更新答案,否则,将有一定概率更新答案(更新坐标的幅度时间的增大减小更新答案的概率时间的增大以及两个代价之差的增大减小)。

只要多模拟退火几遍,~~或者保持一颗虔诚的心,~~就能过了。


代码

#include<bits/stdc++.h>
#define max(x,y) ((x)>(y)?(x):(y))
#define min(x,y) ((x)<(y)?(x):(y))
#define LL long long
#define swap(x,y) (x^=y,y^=x,x^=y)
#define delta 0.99
#define N 1000
using namespace std;
int n,x[N+5],y[N+5],w[N+5];
inline char tc()
{static char ff[100000],*A=ff,*B=ff;return A==B&&(B=(A=ff)+fread(ff,1,100000,stdin),A==B)?EOF:*A++;
}
inline void read(int &x)
{x=0;int f=1;char ch;while(!isdigit(ch=tc())) f=ch^'-'?1:-1;while(x=(x<<3)+(x<<1)+ch-'0',isdigit(ch=tc()));x*=f;
}
inline void write(int x)
{if(x<0) putchar('-'),x=-x;if(x>9) write(x/10);putchar(x%10+'0');
}
inline double dis(double nx,double ny)//计算出n个点的权值乘上到选定点的距离之和
{register int i;double res=0.0;for(i=1;i<=n;++i) res+=(double)sqrt((x[i]-nx)*(x[i]-nx)+(y[i]-ny)*(y[i]-ny))*w[i];return res;
}
inline void SA(double &X,double &Y)//Simulated Annealing,模拟退火
{double tt=3000,res=dis(X,Y);//tt表示变化量,res表示当前代价while(tt>0.000000000000001){double nx=X+(rand()*2-RAND_MAX)*tt,ny=Y+(rand()*2-RAND_MAX)*tt,new_res=dis(nx,ny);//计算出新的坐标以及新的代价if(new_res<res||exp((res-new_res)/tt)*RAND_MAX>rand()) res=new_res,X=nx,Y=ny;//如果新的代价小于当前代价,或在一定的几率下,更新当前状态tt*=delta;//将变化量减小,是一个模拟物理学上的退火操作的过程}
}
int main()
{srand(time(NULL)),srand(rand()),srand(rand());register int i;for(read(n),i=1;i<=n;++i) read(x[i]),read(y[i]),read(w[i]);double ans_x=0.0,ans_y=0.0;for(i=1;i<=10;++i) SA(ans_x,ans_y);//模拟退火10次return printf("%.3lf %.3lf",ans_x,ans_y),0;
}

【洛谷1337】[JSOI2004] 吊打XXX(模拟退火经典题)相关推荐

  1. 洛谷 P1337 [JSOI2004]平衡点 / 吊打XXX

    具体题目见洛谷 P1337 [JSOI2004]平衡点 / 吊打XXX 方法一:模拟退火 思路:当绳子平衡时,系统的能量最小,则此时物体总的重力势能要最小,也就是物体重量一定的情况下绳长最长,即桌子上 ...

  2. python刷题 NOI题库 python题解 洛谷、牛客网、AcWing 刷题等

    NOI题库 python题解-2022.01.07整理(1.1-1.3) NOI题库 python题解-2022.01.07整理(1.1-1.3)_dllglvzhenfeng的博客-CSDN博客 N ...

  3. P1337 [JSOI2004]平衡点 / 吊打XXX 模拟退火

    平衡点 / 吊打XXX solution 记录一下模拟退火的几个题目 code /*SiberianSquirrel*//*CuteKiloFish*/ #include <bits/stdc+ ...

  4. 洛谷、牛客网、AcWing 刷题(python版)

    牛客网python专项练习整理(一) https://blog.csdn.net/weixin_41913008/article/details/87203468 牛客网剑指offer--python ...

  5. 洛谷P1337 [JSOI2004]平衡点 / 吊打XXX(模拟退火)

    传送门 先坑着,联赛活着回来的话我就写(意思就是我绝对不会写了) 1 //minamoto 2 #include<cstdio> 3 #include<cmath> 4 #in ...

  6. BZOJ 3680 吊打XXX 模拟退火

    首先这题应该改名叫吊打出题人 题目大意:给定n个质点,求重心 这n个质点的重心满足Σ(重心到点i的距离)*g[i]最小 模拟退火的裸题 尼玛交了两篇 死活过不去 各种改参数 最后发现是我的INF不够大 ...

  7. 洛谷 P5713、P5719、P5730、P5737题 题解(Java语言描述)

    P5713 题目要求 P5713题目链接 AC代码(Java语言描述) import java.util.Scanner;public class Main {public static void m ...

  8. 大数高精加减乘除(洛谷P1601、P2142、P1303、P1480题题解,Java语言描述)

    写在前面 算法归算法,有现成的API能用为什么不用? (纯算法党别喷我,以后我再写高精算法的文) P1601 → A+B Problem 题目要求 P1601题目链接 AC代码(Java语言描述) i ...

  9. 洛谷P5733、P5734、P5735、P5739题题解(Java语言描述)

    P5733题目要求 P5733题目链接 P5733分析 toUpperCase()就行了-- P5733AC代码(Java语言描述) import java.util.Scanner;public c ...

最新文章

  1. python2和python3分别是python的两个版本_Windows下Python2与Python3两个版本共存的方法详解...
  2. java多线程实现电梯_面对对象第二单元总结 - 电梯(java多线程)
  3. Python中的条件语句和循环语句
  4. linux svn 常用命令
  5. hibernate 排序_Hibernate提示:排序和排序
  6. 搭建一个微服务商城到底可以有多快?
  7. 你应该知道的 iTerm2 使用方法--MAC终端工具
  8. VMWare 8 安装 Mac OS 10.7 (Lion)版 【转】
  9. 我的世界物品java修改代码大全,我的世界秘籍_物品代码秘籍中文大全_蚕豆网攻略...
  10. 你不得不知道的流程规范@多方配合的需求质量控制
  11. KL散度、JS散度 的理解以及一些问题
  12. SQL插入数据时让ID从指定值自增
  13. 云原生爱好者周刊:KubeSphere 3.3.0 Alpha 版发布
  14. java入门、常量和变量
  15. 垃圾分类数据集(垃圾图片数据集)
  16. 网络链接错误,请检查配置后重试!
  17. find函数的使用方法Matlab,matlab中find函数的使用说明——emily语法介绍
  18. 快递收件寄件JAVA小程序技术描述_解析“微快递”小程序的交互流程
  19. 特征多项式及Cayley-Hamilton定理
  20. 怎么将不可编辑的英文PDF文档翻译成中文

热门文章

  1. Qt: QStringList去除重复元素
  2. 使用EasyPoi利用excel模板导出excel表格下载
  3. 【文智背后的奥秘】系列篇——情感分类
  4. Android USB 输入设备
  5. ':app:clean'. Unable to delete directory:app\build\intermediates
  6. 悟空,削他!善了个哉的……
  7. 串口的空闲中断+DMA接收(附F4代码)
  8. 联想拯救者Y7000,电源键一直红灯。还以为电池出问题了,其实....
  9. 达人评测锐龙r7 5800h和酷睿i7 12650h选哪个好
  10. 面试太卷,我选择背八股。。。