[LnOI2019]长脖子鹿省选模拟赛 东京夏日相会
这里来一发需要开毒瘤优化,并且几率很小一遍过的模拟退火题解...
友情提醒:如果你很久很久没有过某一个点,您可以加上特判
可以像 P1337 [JSOI2004]平衡点 / 吊打XXX 那道题目一样
如果不会退火可以拿那道题练手...
个人看来这题和那题差不多,主要区别在get_ans()的函数上面
如何get_ans呢?
(图很垃圾,别介意)
先看这张图:
假设中间的黑点是目前确定的圆心,要get的ans是离这个点最远的圆上的点
那么初中数学老师就会教你:距离=两个圆心的距离+选中圆的半径
像这样:
显然最远的点只要O(n)遍历取最大值就好了
然后套上退火的模板就好了吧
#pragma GCC optimize(2)
#pragma GCC optimize(3)
#pragma GCC optimize("inline")
#pragma GCC optimize("Ofast")
#include<cstdio>
#include<iostream>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<cstdlib>
#include<ctime>
using namespace std;
inline int read(){
int ans=0,f=1; char chr=getchar();
while(!isdigit(chr)){if(chr=='-') f=-1;chr=getchar();}
while(isdigit(chr)) {ans=(ans<<3)+(ans<<1)+chr-48;chr=getchar();}
return ans*f;
}
int n;
double x[50005],y[50005],z[50005],ansx,ansy,BR;
double dis(double x,double y,double a,double b){return sqrt((x-a)*(x-a)+(y-b)*(y-b));}
double get(double q,double p){
double ans=0;
for(register int i=1;i<=n;++i)
ans=max(dis(x[i],y[i],q,p)+z[i],ans) ;
return ans;
}
const double delta=0.999;
double ans=1e20,maxn=-54564564;
int lim;
void Fire(){
register double fx=ansx,fy=ansy;
register double t=12180.0;
while(t>1e-14){
register double tx=fx+(rand()*2-RAND_MAX)*t;
register double ty=fy+(rand()*2-RAND_MAX)*t;
register double tans=get(tx,ty);
register double DE=tans-ans;
if(DE<0){
fx=tx;
fy=ty;
ansx=tx;
ansy=ty;
ans=tans;
}else if(exp(-DE/t)*RAND_MAX>rand())
fx=tx,fy=ty;
t*=delta;
if(clock()-BR>=lim){printf("%.7lf %.7lf %.7lf",ansx,ansy,ans);exit(0);}
}
}
int main(){
BR=clock();
srand(unsigned(time(0)));
n=read();
for(register int i=1;i<=n;++i) scanf("%lf%lf%lf",&x[i],&y[i],&z[i]),ansx+=x[i],ansy+=y[i],maxn=max(maxn,z[i]);
ansx/=1.0*n;
ansy/=1.0*n;
lim=(n<=1000||maxn==0)?995:3995;
lim*=1000;
while(1) Fire();
return 0;
}
[LnOI2019]长脖子鹿省选模拟赛 东京夏日相会的更多相关文章
- 【洛谷比赛】[LnOI2019]长脖子鹿省选模拟赛 T1 题解
今天是[LnOI2019]长脖子鹿省选模拟赛的时间,小编表示考的不怎么样,改了半天也只会改第一题,那也先呈上题解吧. T1:P5248 [LnOI2019SP]快速多项式变换(FPT) 一看这题就很手 ...
- 洛谷[LnOI2019]长脖子鹿省选模拟赛 简要题解
传送门 听说比赛的时候T4T4T4标程锅了??? WTF换我时间我要写T3啊 于是在T4T4T4调半天无果的情况下260pts260pts260pts收场真的是tcltcltcl. T1 快速多项式变 ...
- [luogu#2019/03/10模拟赛][LnOI2019]长脖子鹿省选模拟赛赛后总结
t1-快速多项式变换(FPT) 题解 看到这个\(f(x)=a_0+a_1x+a_2x^2+a_3x^3+ \cdots + a_nx^n\)式子,我们会想到我们学习进制转换中学到的,那么我们就只需要 ...
- 洛谷[LnOI2019]长脖子鹿省选模拟赛t1 -> 快速多项式变换
快速多项式 做法:刚拿到此题有点蒙,一开始真没想出来怎么做,于是试着去自己写几个例子. 自己枚举几种情况之后就基本看出来了,其实本题中 n 就是f(m)在m进制下的位数,每项的系数就是f(m)在m进制 ...
- 长脖子鹿省选模拟赛 [LnOI2019SP]快速多项式变换(FPT)
本片题解设计两种解法 果然是签到题... 因为返回值问题T了好久... 第一眼:搜索大水题? 然后...竟然A了 #include<cstdio> #include<queue> ...
- P5030 长脖子鹿放置 最小割
$ \color{#0066ff}{ 题目描述 }$ 如图所示,西洋棋的"长脖子鹿",类似于中国象棋的马,但按照"目"字攻击,且没有中国象棋"别马腿& ...
- 长脖子鹿放置【洛谷P5030】二分图最大独立集变形题
题目背景 众周所知,在西洋棋中,我们有城堡.骑士.皇后.主教和长脖子鹿. 题目描述 如图所示,西洋棋的“长脖子鹿”,类似于中国象棋的马,但按照“目”字攻击,且没有中国象棋“别马腿”的规则.(因为长脖子 ...
- P5030 长脖子鹿放置
题目背景 众周所知,在西洋棋中,我们有城堡.骑士.皇后.主教和长脖子鹿. 题目描述 如图所示,西洋棋的"长脖子鹿",类似于中国象棋的马,但按照"目"字攻击,且没 ...
- @省选模拟赛03/16 - T3@ 超级树
目录 @description@ @solution@ @accepted code@ @details@ @description@ 一棵 k-超级树(k-SuperTree) 可按如下方法得到:取 ...
随机推荐
- ubuntu14.04远程软件VNC的安装、设置方法
ubuntu中VNCX11開機啟動保持靜默狀態方法: 1首先安裝vncx11. 2.設置vnc密碼,會自動保存在/home/test/.vnc/passwd中 3.將密碼複製到/etc中 4.在/et ...
- Python学习笔记——Matplot库
https://www.cnblogs.com/laoniubile/p/5893286.html 一.基本指令 import matplotlib.pyplot as plt plt.figure ...
- sysbench_memory
对于内存而言,这里--memory-total-size=100G 就是 意味着 total number of events: 104857600 1. --memory-total-size=10 ...
- 有赞 MySQL 自动化运维之路 — ZanDB
转自:https://tech.youzan.com/youzan-mysql-auto-ops-road/ 一.前言 在互联网时代,业务规模常常出现爆发式的增长.快速的实例交付,数据库优化以及备份管 ...
- 3.2.1 for循环与while循环的基本语法
不停地重复一件事情,时间久了会非常无聊,然后大脑就会由于疲劳而容易入睡. 重复性的劳动会使人疲劳,而计算机不会,只要代码写得正确,计算机就会孜孜不倦地重复工作.在Python中主要有两种形式的循环结构 ...
- 玲珑杯1147 - 最后你还是AK了
1147 - 最后你还是AK了 Time Limit:5s Memory Limit:256MByte DESCRIPTION 今天HHHH遇到了一颗树,这个树有nn个点(nn为偶数),每条边都有一个 ...
- 清北学堂模拟赛d6t1 角谷猜想
分析:不用删数字,我们考虑加入数字,维护一个栈,把不是4和7的数加进去,遇到3看栈顶是不是1,是的话弹出来就可以了. #include <bits/stdc++.h> #define N ...
- nyoj_88_汉诺塔(一)_201308201730
汉诺塔(一)时间限制:1000 ms | 内存限制:65535 KB难度:3描述在印度,有这么一个古老的传说:在世界中心贝拿勒斯(在印度北部)的圣庙里,一块黄铜板上插着三根宝石针.印度教的主神梵天在创 ...
- SQL Server 日志
http://www.cnblogs.com/CareySon/category/354290.html http://blog.csdn.net/tjvictor/article/details/5 ...
- solaris11-text-安装GUI(gnome)
http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=45057&id=3018467 1.下载所需的资源Text Ins ...