博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BZOJ 1379 模拟退火
阅读量:7081 次
发布时间:2019-06-28

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

模拟退火的第一题~

//By SiriusRen#include 
#include
#include
using namespace std;int cases,X,Y,M;struct Point{
double x,y,dis;}point[1005],b[33],ans,t;double dis(Point a){ double tmp=1e8; for(int i=1;i<=M;i++){ double tx=a.x-point[i].x,ty=a.y-point[i].y; tmp=min(tmp,sqrt(tx*tx+ty*ty)); }return tmp;}int main(){ srand(1005730820),scanf("%d",&cases); while(cases--){ scanf("%d%d%d",&X,&Y,&M),ans.dis=0; for(int i=1;i<=M;i++)scanf("%lf%lf",&point[i].x,&point[i].y); for(int i=1;i<=30;i++)b[i].x=rand()%X+1,b[i].y=rand()%Y+1,b[i].dis=dis(b[i]); for(double i=max(X,Y);i>=1e-3;i*=0.9) for(int j=1;j<=30;j++) for(int k=1;k<=30;k++){ double ran=rand(); t.x=b[j].x+cos(ran)*i,t.y=b[j].y+sin(ran)*i,t.dis=dis(t); if(t.x<0||t.x>X||t.y<0||t.y>Y)continue; if(t.dis>b[j].dis)b[j]=t; } for(int i=1;i<=30;i++)if(ans.dis

这里写图片描述

转载于:https://www.cnblogs.com/SiriusRen/p/6532133.html

你可能感兴趣的文章
Dynamic CRM 2013学习笔记(八)过滤查找控件 (类似省市联动)
查看>>
iOS执行时与method swizzling
查看>>
SQL点滴21—几个有点偏的语句
查看>>
Android各种效果集合
查看>>
【转】Geary's C
查看>>
Linux中查看socket状态(转)
查看>>
public-private-protected-默认缺省 的区别
查看>>
React Native上手
查看>>
0919 - iPaste 上架 App Store
查看>>
iKcamp&掘金Podcast直播回顾(12月2号和9号的两场)
查看>>
Java简短知识点
查看>>
Hibernate第八篇【懒加载】
查看>>
[面试∙网络] TCP/IP(四):TCP 与 UDP 协议简介
查看>>
浅谈 Objective-C Associated Objects
查看>>
编程或者软件开发到底算不算知识?
查看>>
iOS UI绘制原理
查看>>
JavaScript 二进制的 AST
查看>>
自定义控件(三) 源码分析measure流程
查看>>
不需要再手写 onSaveInstanceState 了,因为你的时间非常值钱
查看>>
SSL/TLS协议安全系列:CBC 模式的弱安全性介绍(一)
查看>>