当前位置: 首页 > news >正文

[BZOJ 3680]吊打XXX(模拟退火)

Description

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

Solution

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

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

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

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<ctime>
#define MAXN 10005
using 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<t)t=res,ansmin_x=xx,ansmin_y=yy;
    return res;
}
int main()
{
    srand(299792458);
    n=read();
    for(int i=1;i<=n;i++)
    x[i]=read(),y[i]=read(),w[i]=read(),ansx+=x[i],ansy+=y[i];
    ansx/=n,ansy/=n;
    ansmin_x=ansx,ansmin_y=ansy,t=judge(ansx,ansy);
    double T=1e6,r=0.99;
    while(T>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

相关文章:

  • 可达性分析算法-确定那些对象是垃圾(转)
  • Android之使用ContentResolver对通信录中的数据进行简单操作
  • Android之网络操作 - 从网络获取图片或网页
  • OpenGL学习--开发环境
  • jQuery常用总结(转载)
  • Android之把从网络中获取的数据以XML与Json格式返回
  • 抗锯齿的BUG
  • Spring Boot 定时任务的使用
  • VC2012编译CEF3-转
  • Android之用HTTP的get,post,HttpClient三种方式向service提交文本数据
  • PCB原理图库
  • mysql相关故障
  • Win7 打开网页超级慢的解决方案
  • Java并发和多线程3:线程调度和有条件取消调度
  • Android之使用Http协议实现文件上传功能
  • 【译】JS基础算法脚本:字符串结尾
  • android 一些 utils
  • Codepen 每日精选(2018-3-25)
  • CSS实用技巧
  • Date型的使用
  • ECMAScript 6 学习之路 ( 四 ) String 字符串扩展
  • ES6核心特性
  • in typeof instanceof ===这些运算符有什么作用
  • Java 11 发布计划来了,已确定 3个 新特性!!
  • JavaScript DOM 10 - 滚动
  • JSDuck 与 AngularJS 融合技巧
  • Linux快速复制或删除大量小文件
  • SpiderData 2019年2月23日 DApp数据排行榜
  • 给github项目添加CI badge
  • 简单实现一个textarea自适应高度
  • 开放才能进步!Angular和Wijmo一起走过的日子
  • 离散点最小(凸)包围边界查找
  • 每天10道Java面试题,跟我走,offer有!
  • 区块链技术特点之去中心化特性
  • 让你成为前端,后端或全栈开发程序员的进阶指南,一门学到老的技术
  • 新书推荐|Windows黑客编程技术详解
  • 云大使推广中的常见热门问题
  • ​​​​​​​GitLab 之 GitLab-Runner 安装,配置与问题汇总
  • #{}和${}的区别是什么 -- java面试
  • #Z2294. 打印树的直径
  • (2020)Java后端开发----(面试题和笔试题)
  • (LNMP) How To Install Linux, nginx, MySQL, PHP
  • (八)Docker网络跨主机通讯vxlan和vlan
  • (博弈 sg入门)kiki's game -- hdu -- 2147
  • (力扣题库)跳跃游戏II(c++)
  • (三)mysql_MYSQL(三)
  • (幽默漫画)有个程序员老公,是怎样的体验?
  • (轉貼) 2008 Altera 亞洲創新大賽 台灣學生成果傲視全球 [照片花絮] (SOC) (News)
  • .NET Core WebAPI中使用swagger版本控制,添加注释
  • .Net6使用WebSocket与前端进行通信
  • .NET分布式缓存Memcached从入门到实战
  • .NET连接MongoDB数据库实例教程
  • /etc/apt/sources.list 和 /etc/apt/sources.list.d
  • @ 代码随想录算法训练营第8周(C语言)|Day53(动态规划)
  • @Import注解详解