博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[BZOJ 3680]吊打XXX(模拟退火)
阅读量:6075 次
发布时间:2019-06-20

本文共 1437 字,大约阅读时间需要 4 分钟。

Description

gty又虐了一场比赛,被虐的蒟蒻们决定吊打gty。gty见大势不好机智的分出了n个分身,但还是被人多势众的蒟蒻抓住了。蒟蒻们将n个gty吊在n根绳子上,每根绳子穿过天台的一个洞。这n根绳子有一个公共的绳结x。吊好gty后蒟蒻们发现由于每个gty重力不同,绳结x在移动。蒟蒻wangxz脑洞大开的决定计算出x最后停留处的坐标,由于他太弱了决定向你求助。不计摩擦,不计能量损失,由于gty足够矮所以不会掉到地上。

Solution

题面丧病…似乎是一道模拟退火的板子题,求的那个东西叫做广义费马点

从昨天晚上WA到今天,各种调参数

呜呜呜RP太差了…AC率又不知道掉到哪里去了…再也不玩什么随机化算法了…

#include
#include
#include
#include
#include
#include
#define MAXN 10005using namespace std;int n;int x[MAXN],y[MAXN],w[MAXN];double ansmin_x,ansmin_y,t;double ansx=0,ansy=0;inline double read(){ int x=0,f=1;char c=getchar(); while(c<'0'||c>'9'){ if(c=='-')f=-1;c=getchar();} while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();} return x*f;}inline double Random(){ return (double)(rand()%10000)/10000.0;}inline double dis(double x1,double y1,double x2,double y2){ return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));}double judge(double xx,double yy){ double res=0; for(int i=1;i<=n;i++) res+=dis(xx,yy,x[i],y[i])*w[i]; if(res
1e-3) { double xx,yy; xx=ansx+T*(Random()*2-1.0); yy=ansy+T*(Random()*2-1.0); double dE=judge(ansx,ansy)-judge(xx,yy); if(dE>0||exp(dE/T)>Random())ansx=xx,ansy=yy; T*=r; } for(int i=1;i<=1000;i++) { double xx=ansmin_x+(Random()*2-1.0)*T,yy=ansmin_y+(Random()*2-1.0)*T; judge(xx,yy); } printf("%.3lf %.3lf\n",ansmin_x,ansmin_y); return 0;}

 

转载于:https://www.cnblogs.com/Zars19/p/6979072.html

你可能感兴趣的文章
成为一名Java架构师的必修课
查看>>
Two Sum
查看>>
开源大数据周刊-第58期
查看>>
POJO、PO、DO、VO、DTO等浅析
查看>>
学习JavaScript很吃力?开发五年经验带你轻松上路!
查看>>
准备把这里当作自己发出声音的地方
查看>>
微信小程序云开发实现一个社区 Demo(补充)
查看>>
Python自动抢红包,超详细教程,再也不会错过微信红包了!
查看>>
java高并发程序设计(二)多线程基础
查看>>
理解浏览器缓存以及304状态码
查看>>
react native之android多包共存解决方案
查看>>
css实现盒尺寸重置、均匀分布的子元素、截断文本
查看>>
从0到1玩转大数据 【Linux进阶篇 - 如何禁用Swap交换区】
查看>>
VSCode 远程开发插件快速使用
查看>>
专访阿里陈康贤:我所理解的网站架构
查看>>
iOS | 使用HBuilder进行本地打包步骤
查看>>
TypeScript (基础)
查看>>
端动态化方案详细设计
查看>>
H5连接打印机
查看>>
如何判断自己适不适合做程序员?这几个特点了解一下
查看>>