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

  • 基本上是照着别人的代码写的,模拟退火为什么一定能找到答案呢。。。迷惑,,有时间搜一搜证明啥的
  • sa步骤:这个是要确定一个(xi,yi)使得函数()值最小,所以先选一个开始的点(这里选的是所有桌子上的点的均值),然后(rand()*2-RAND_MAX)*T就是deltax,deltay,然后再算出移动了这个delta后的函数值,该函数值如果是一个更小的值,则接受,否则如果( exp(-delta/T)*RAND_MAX>rand() )才接受,注意这里的delta是函数值的差值,这个exp(-delta/T)是一个在0,1之间的数。
  • 产生移动距离:(rand()*2-RAND_MAX)*T  (这样正负都有)
  • 以一定的概率接受移动:exp(-delta/T)*RAND_MAX>rand()
  • 步骤:找到需要最优化的函数,找到移动方案,徐徐降温直到温度达到exp=1e-15退出,输出答案
  • 代码:
     #include <bits/stdc++.h>
    #define nmax 1010 using namespace std;
    int n;
    double x[nmax],y[nmax],w[nmax];
    double ansx,ansy;
    const double eps=1e-; int cnt=; double f(double nx,double ny){
    double tot=,tmp;
    for (int i=; i<n; i++) {
    tmp=sqrt( (nx-x[i])*(nx-x[i])+(ny-y[i])*(ny-y[i]) );
    tot+=tmp*w[i];
    }
    return tot;
    } void sa(){
    double t=200.0;
    while(t>eps){
    double nowx=ansx+(rand()*-RAND_MAX)*t,nowy=ansy+(rand()*-RAND_MAX)*t;
    double delta=f(nowx,nowy)-f(ansx,ansy);
    if( delta< || ( exp(-delta/t)*RAND_MAX>rand() ) ) { ansx=nowx; ansy=nowy; }
    t*=0.998;
    }
    } int main(){
    srand((int)time(NULL));
    cin>>n;
    for (int i=; i<n; i++) {
    scanf("%lf%lf%lf",&x[i],&y[i],&w[i]);
    ansx+=x[i];
    ansy+=y[i];
    }
    ansx/=(double)n;
    ansy/=(double)n;
    sa();
    printf("%.3lf %.3lf\n",ansx,ansy);
    return ;
    }

    模拟退火SA刷题记录的更多相关文章

    1. PE刷题记录

      PE刷题记录 PE60 / 20%dif 这道题比较坑爹. 所有可以相连的素数可以构成一张图,建出这张图,在其中找它的大小为5的团.注意上界的估算,大概在1W以内.1W内有1229个素数,处理出这些素 ...

    2. leetcode刷题记录--js

      leetcode刷题记录 两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但 ...

    3. Leetcode刷题记录(python3)

      Leetcode刷题记录(python3) 顺序刷题 1~5 ---1.两数之和 ---2.两数相加 ---3. 无重复字符的最长子串 ---4.寻找两个有序数组的中位数 ---5.最长回文子串 6- ...

    4. 刷题记录:[HarekazeCTF2019]encode_and_encode

      目录 刷题记录:[HarekazeCTF2019]encode_and_encode 一.知识点 JSON转义字符绕过 php伪协议 刷题记录:[HarekazeCTF2019]encode_and_ ...

    5. 刷题记录:[De1CTF 2019]Giftbox && Comment

      目录 刷题记录:[De1CTF 2019]Giftbox && Comment 一.知识点 1.sql注入 && totp 2.RCE 3.源码泄露 4.敏感文件读取 ...

    6. 刷题记录:[强网杯 2019]Upload

      目录 刷题记录:[强网杯 2019]Upload 一.知识点 1.源码泄露 2.php反序列化 刷题记录:[强网杯 2019]Upload 题目复现链接:https://buuoj.cn/challe ...

    7. 刷题记录:[XNUCA2019Qualifier]EasyPHP

      目录 刷题记录:[XNUCA2019Qualifier]EasyPHP 解法一 1.error_log结合log_errors自定义错误日志 2.include_path设置包含路径 3.php_va ...

    8. 刷题记录:[DDCTF 2019]homebrew event loop

      目录 刷题记录:[DDCTF 2019]homebrew event loop 知识点 1.逻辑漏洞 2.flask session解密 总结 刷题记录:[DDCTF 2019]homebrew ev ...

    9. 刷题记录:[CISCN2019 东北赛区 Day2 Web3]Point System

      目录 刷题记录:[CISCN2019 东北赛区 Day2 Web3]Point System 知识点 1.padding-oracle attack 2.cbc字节翻转攻击 3.FFMpeg文件读取漏 ...

    随机推荐

    1. NCE L5

      课文内容 重点单词解析 重点课文解析

    2. 14.git的安装使用

      目录 一.版本控制器 二.git 简介 git与svn比较 git的工作流程 版本库间的通信 git分支管理 三.git使用 流程(核心总结) 安装 基础命令 将已有的文件夹 - 初始化为git仓库 ...

    3. Web移动前端开发-——bootstarp响应式框架

      移动端WEB开发之响应式布局 1.0 响应式开发原理 1.1 响应式开发原理 就是使用媒体查询针对不同宽度的设备进行布局和样式的设置,从而适配不同设备的目的. 设备的划分情况: 小于768的为超小屏幕 ...

    4. Java日志介绍(3)-Logback

      Logback 继承自Log4j,它建立在有十年工业经验的日志系统之上.它比其它所有的日志系统更快并且更小,包含了许多独特并且有用的特性. 1.配置 1.1.加载配置 Logback能够在初始化期间自 ...

    5. HTML <link> 标签 PC移动网站适配

      1.在pc版网页上,添加指向对应移动版网址的特殊链接rel="alternate"标记,这有助于百度发现网站的移动版网页所在的位置: <link rel="cano ...

    6. 显示层封装及实现与优化(无动画+css3动画+js动画)

      showhide.html <!DOCTYPE html> <html lang="en"> <head> <meta charset=& ...

    7. docker jenkins 前端node项目 自动化部署异常 env: ‘node’: No such file or directory

      出现问题是docker jenkins 里面没有自动安装node导致找不到这个Node命令 解决方案:手动安装nodejs # 进入jenkins对应容器中 # docker exec -it [对应 ...

    8. hadoop学习摘要

      参考链接:https://www.zhihu.com/question/333417513 https://www.oschina.net/p/hbase hadoop环境搭建:https://blo ...

    9. opencv —— resize、pyrUp 和 pyrDown 图像金字塔(高斯金字塔、拉普拉斯金字塔)与尺寸缩放(向上采样、向下采样)

      我们经常会将某种尺寸的图像转化为其他尺寸的图像,如果需要放大或者缩小图像的尺寸,在 OpenCV 中可以使用如下两种方法: resize 函数,最直接的方法. pyrUp 和 pyrDown 函数,即 ...

    10. nCompass-解决方案介绍

      nCompass-解决方案介绍 1.  IT运维的现状及痛点 业务部门投诉系统不可用,各个部门盘查: 网络是通的:系统资源正常:应用进程状态都是正常的:数据库日志中也没有报错 运维被动: 80%的故障 ...