模拟退火
想不出来别的做法的时候,亦或是函数特征比较明显的时候,具体一点,就是很明显的能看出来他是个函数,且在规定范围内有极值的时候可以使用模拟退火。

AcWing3167

费马点是吧,直接随机化把你草出屎来;

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<ctime>
#define x first
#define y second
using namespace std;
typedef pair<double, double> PDD;
const int N = 110;
int n;
PDD q[N];
double ans = 1e8;
double rand(double l,double r) {return (double) rand() / RAND_MAX * (r - l) + l;
}
double get_dist(PDD a, PDD b) {double dx = a.x - b.x;double dy = a.y - b.y;return sqrt(dx * dx + dy * dy);
}
double calc(PDD p) {double res = 0;for(int i=0;i < n;i ++) res += get_dist(p, q[i]);ans = min(ans, res);return res;
}
void simulate_anneal() {PDD cur(rand(0, 10000), rand(0, 10000));for(double t = 1e4; t > 1e-4; t *= 0.9) {PDD np(rand(cur.x - t, cur.x + t), rand(cur.y - t, cur.y + t) );double dt = calc(np) - calc(cur);if ( exp(- dt / t) > rand(0,1)) cur = np;}}
int main()
{scanf("%d",&n);for(int i=0;i < n;i ++ ) scanf("%lf%lf",&q[i].x,&q[i].y);for(int i=0;i < 100;i ++ ) simulate_anneal();printf("%%.0lf\n",ans);return 0;
}

AcWing2680

非常巧妙地一道题,揭示了随机化的一些特点;
虽然你并不一定发现的了什么东西可以随机,但是你可以通过哈希的方法找到一个跟他类似的东西,等价的东西进行随机;
随机可以根据答案的可能出现的性质,进行一些随机后的处理,以减少随机的信息量,在这题里面就是贪心,抓住你不得不随机的东西进行随机;

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>
using namespace std;
const int N = 25, M = 10;
int n , m ;
int w[N], s[M];
double ans = 1e8;
double calc()
{memset(s, 0 ,sizeof s);for(int i = 0;i < n;i ++) {int k = 0;for(int j=0; j < m;j ++) if(s[j] < s[k])k = j;s[k] += w[i];}double avg = 0;for(int i=0;i<m;i++) avg += (double)s[i] / m;double res = 0;for(int i=0;i<m;i++) res += (s[i] - avg) * (s[i] - avg);res = sqrt(res / m);ans = min(ans ,res);return res;
}
void simulate_anneal() {random_shuffle(w, w+n);for(double t=1e6; t > 1e-6; t *= 0.95) {int a = rand() % n , b = rand() % n;double x = calc();swap(w[a], w[b]);double y = calc();double delta = y - x;if (exp(-delta / t) < (double) rand()/RAND_MAX)swap(w[a], w[b]);}
}
int main()
{cin >> n >> m;for(int i=0;i<n;i++) cin >> w[i];for(int i=0;i<100;i++) simulate_anneal();printf("%.2lf\n",ans);return 0;
}

SIMULATE ANNEAL相关推荐

  1. 模拟退火(Simulate Anneal)算法

    算法介绍 模拟退火算法(Simulate Anneal,SA)是一种通用概率演算法,用来在一个大的搜寻空间内找寻命题的最优解.美国物理学家 N.Metropolis 和同仁在1953年发表研究复杂系统 ...

  2. 人工智能(Artificial Intelligence)常用算法

    https://blog.csdn.net/qq_35624642/article/details/72817168 个体人工智能 -随机数(Random) -A*寻路(A* Search Algor ...

  3. JZOJ 5267. 费马点问题

    Description 给n个点,每个点的横纵坐标为[0,10000]内的整数,找出一个点,使这个点到其他所有点的距离之和最小,也就是求费马点. 找到的点可能是小数. Input 第一行一个整数n表示 ...

  4. 模拟退火总结+洛谷模板题(P1337 [JSOI2004]平衡点 / 吊打XXX)

    原来就听说过模拟退火,然后一直觉得神奇,但是没有真正的去实现这个算法. 模拟退火对TSP之类的问题很实用. 1.概念:模拟退火算法(Simulate Anneal,SA)是一种通用概率演算法,用来在一 ...

  5. 模拟退火算法(TSP问题)

    模拟退火算法解决TSP问题 算法思想 模拟退火算法(Simulate Anneal,SA)是一种通用概率演算法,用来在一个大的搜寻空间内找寻命题的最优解 模拟退火算法来源于固体退火原理,将固体加温至充 ...

  6. 机器学习实战4-sklearn训练线性回归模型(鸢尾花iris数据集分类)

    不贴图都没人看系列.... 线性回归推导: 上图求导部分有误,少些一个转置符号,更正为: 逻辑回归推导: (公式中"ln"和"log"表示一个意思,都是以&qu ...

  7. azure kinect三维点云_【干货】三维重建技术综述

    三维重建技术通过深度数据获取.预处理.点云配准与融合.生成表面等过程,把真实场景刻画成符合计算机逻辑表达的数学模型.这种模型可以对如文物保护.游戏开发.建筑设计.临床医学等研究起到辅助的作用. 三维重 ...

  8. 模拟退火法-TSP问题

    模拟退火算法(Simulate Anneal Arithmetic,SAA)是一种通用概率演算法,用来在一个大的搜寻空间内找寻命题的最优解.模拟退火是S.Kirkpatrick, C.D.Gelatt ...

  9. 三维重建:三维重建技术概述

    基于视觉的三维重建,指的是通过摄像机获取场景物体的数据图像,并对此图像进行分析处理,再结合计算机视觉知识推导出现实环境中物体的三维信息. 1. 相关概念 (1)彩色图像与深度图像 彩色图像也叫作RGB ...

  10. azure kinect三维点云_三维重建技术,你捋清楚了吗?本文适合小白

    三维重建技术通过深度数据获取.预处理.点云配准与融合.生成表面等过程,把真实场景刻画成符合计算机逻辑表达的数学模型.这种模型可以对如文物保护.游戏开发.建筑设计.临床医学等研究起到辅助的作用. 三维重 ...

最新文章

  1. pythonos模块介绍_Python os模块介绍
  2. Java总结篇系列:Java泛型
  3. python机器学习入门(Day1:Numpy)
  4. 设置Jexus开机启动
  5. python画端午节_我想带你去旅行,我用Python提前做了一份端午旅游攻略,请收下!...
  6. java接口文件定义类_Java入门笔记(四)类、包和接口
  7. Django-----中间件Cookie
  8. PyCharm修改主题和修改背景
  9. Mac M系列电脑 模拟器运行时 pods库 YYkit库报错
  10. 佳能Canon imageCLASS MF742Cdw 一体机驱动
  11. json特殊符号 java_java 特殊符号转json出错
  12. UVA 10131 Is Bigger Smarter? (DP,最长条件子序列)
  13. 爆破神器 Hydra 的使用
  14. html旋转360度特效,CSS3图片旋转特效(360/60/-360度)
  15. hexo博客yilia主题作者名字的更改
  16. 【C语言】两个变量值的交换——指针
  17. oracle客户端12560,windows下 sqlplus / as sysdba 报ora-12560的终极解决方法
  18. PatchWork组织Herbminister行动武器库大揭秘
  19. **关于maven的,maven配置后报 java.lang.UnsupportedClassVersionError: org/codehaus/plexus/classworlds/launche
  20. 《动手学机器人学》第四节(上):位姿描述

热门文章

  1. dqmh框架 labview_LabVIEW宝典(第2版)简介,目录书摘
  2. mongodb创建图书管理_基于vue 和 node Mongodb 的 图书管理系统
  3. Idea全部快捷键+自行修改快捷键
  4. 聚合四方支付系统架构及所需配置
  5. 计算机维修需要工具,小200个电脑维护工具,都能去开个维修店了
  6. ryzen linux mac,AMD Ryzen平台全新macOS10.13.3简洁安装黑苹果镜像
  7. 【log4cpp_学习】2_log4cpp配置文件的使用
  8. 《遗传算法原理及应用》笔记—基本遗传算法
  9. asp探针,用来检测Web服务器相关特性
  10. 高速公路坐标高程计算软件3.3版本发布