bzoj3680模拟退火
看题意就是一道数学物理题,带权费马点 ——这怎么是数学了,这也是物理的
所以要用物理方法,比如FFF
国际著名oi选手miaom曾说
模拟退火初温可以低,但是最好烧个几千次
国际著名物理课代表+1曾说
miaom说什么都对
但是我瞎捣鼓了一波烧了一次不但A了还过了样例(不要说我递进的顺序不对),真是神奇
#include<bits/stdc++.h>
#define MAXN 10000
#define EPS 1e-9
using namespace std;
int wt[MAXN+],n,p,q;
double x,y,ans;
struct point{double x,y;}a[MAXN+],now;
double Rand(){ return 1.0*rand()/RAND_MAX;}
double dist(point a,point b){ return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));}
double tot(const point p)
{
double sum=;
for(int i=;i<=n;i++)
sum+=dist(p,a[i])*wt[i];
return sum;
}
bool operator<(point a,point b){ return tot(a)<tot(b);}
point min(point a,point b){ return a<b?a:b;}
int main()
{
scanf("%d",&n);
for(int i=;i<=n;i++)
scanf("%d%d%d",&p,&q,&wt[i]),a[i]={(double)p,(double)q},x+=p,y+=q;
x/=n,y/=n;
now={x,y};
ans=tot(now);
double T=;
while(T>EPS)
{
double dx=pow(T,2.0/)*(-*Rand()),dy=pow(T,2.0/)*(-*Rand());
point ok={now.x+dx,now.y+dy};
double tr=tot(ok);
double wrong=exp((ans-tr)/T*);
if(wrong>Rand() || tr<ans)
ans=tr,now=ok;
T*=0.99;
}
printf("%.3lf %.3lf\n",now.x,now.y);
}
bzoj3680模拟退火的更多相关文章
- 【BZOJ3680】吊打XXX(模拟退火)
[BZOJ3680]吊打XXX(模拟退火) 题面 BZOJ 题解 模拟退火... 就是模拟退火 然后这题有毒 各种调参数之后终于\(AC\)了.. 这种题就是玄学呀... 温度要调大 最后跑完还要向四 ...
- 模拟退火小结(Bzoj3680:吊打xxx)
简介 就是模拟退火的物理过程,每次随机逼近乘上温度,以\(e^{\Delta/T}\)的概率接受答案,随机一个概率比较 然后就是调参+乱搞 题目 Bzoj3680:吊打xxx 代码 # include ...
- [bzoj3680]吊打XXX_模拟退火
吊打XXX bzoj-3680 题目大意:在平面上给定n个点,每个点有一个权值.请在平面上找出一个点(不一定在这n个点内找)使得这个点到n个点的距离*权值最小,即求这n个点的重心. 注释:$1\le ...
- 模拟退火法(吊打XXX)Bzoj3680
3680: 吊打XXX Time Limit: 10 Sec Memory Limit: 128 MBSec Special Judge Submit: 308 Solved: 94 [Subm ...
- [luogu1337][bzoj3680][JSOI2004]平衡点 / 吊打XXX【模拟退火】
题目描述 gty又虐了一场比赛,被虐的蒟蒻们决定吊打gty.gty见大势不好机智的分出了n个分身,但还是被人多势众的蒟蒻抓住了.蒟蒻们将n个gty吊在n根绳子上,每根绳子穿过天台的一个洞.这n根绳子有 ...
- 【bzoj3680】平衡点 模拟退火
模拟退火是一种求函数最值问题的随机算法. 给定一个函数的某一初始坐标,可以拟定一个"温度"(这里主要是借用退火的物理意义),这里的温度可以理解成自变量可以取值的范围.之后在当前最优 ...
- BZOJ3680 吊打XXX 【模拟退火】
Description gty又虐了一场比赛,被虐的蒟蒻们决定吊打gty.gty见大势不好机智的分出了n个分身,但还是被人多势众的蒟蒻抓住了.蒟蒻们将n个gty吊在n根绳子上,每根绳子穿过天台的一个洞 ...
- bzoj3680: 吊打XXX(模拟退火)
题目要求 最小(dis表示绳结到点i的距离),就是个广义费马点的题,模拟退火裸题QAQ 模拟退火就是优化后的爬山算法,一开始先随机一个平均点,接下来如果随机到的点比当前点劣,温度比较高的话也有几率跳过 ...
- BZOJ3680:吊打XXX(模拟退火)
Description gty又虐了一场比赛,被虐的蒟蒻们决定吊打gty.gty见大势不好机智的分出了n个分身,但还是被人多势众的蒟蒻抓住了.蒟蒻们将 n个gty吊在n根绳子上,每根绳子穿过天台的一个 ...
随机推荐
- BZOJ 3160: 万径人踪灭
Description 一个ab串,问有多少回文子序列,字母和位置都对称,并且不连续. Sol FFT+Manacher. 不连续只需要减去连续的就可以了,连续的可以直接Manacher算出来. 其他 ...
- Android 获得AndroidManifest文件里自定义的meta标签内容
try { ApplicationInfo appInfo= this.getPackageManager().getApplicationInfo(getPackageName(),PackageM ...
- 学习CSS 笔记
1.动态修改div的大小 Html: <div> Hello </div> css: div { resize:both; overflow:auto; } 2. box-si ...
- js数组的sort排序详解
<body> <div> sort()对数组排序,不开辟新的内存,对原有数组元素进行调换 </div> <div id="showBox" ...
- 关于python数据序列化的那些坑
-----世界上本来没那么多坑,python更新到3以后坑就多了 无论哪一门语言开发,都离不了数据储存与解析,除了跨平台性极好的xml和json之外,python要提到的还有自身最常用pickle模块 ...
- 海外建VPS并支持VPN
推荐 DigitalOcean http://www.digitalocean.com/?refcode=7c26aea99ed6
- Delphi的 Format格式化函数
转载自:http://www.cnblogs.com/mumble/archive/2011/05/25/2056462.html Format是一个很常用,却又似乎很烦的方法,本人试图对这个方法的帮 ...
- 【Java EE 学习 56】【酒店会员管理系统技术点总结】
一.树状菜单加载 这是js的一个典型应用,使用zTree插件能够完成该项任务http://www.ztree.me/v3/main.php 我是用的版本:zTree2.5 使用方法: <%@ p ...
- C++ 系列:编译 boost
Copyright © 1900-2016, NORYES, All Rights Reserved. http://www.cnblogs.com/noryes/ 欢迎转载,请保留此版权声明. -- ...
- 17.Java 反射机制
1.反射的定义 反射之中包含了一个"反"的概念,所以要想解释反射就必须先从"正"开始解释,一般而言,当用户使用一个类的时候,应该先知道这个类,而后通过这个类产生 ...