BZOJ_3680_吊打XXX_模拟退火】的更多相关文章

BZOJ_3680_吊打XXX_模拟退火 Description gty又虐了一场比赛,被虐的蒟蒻们决定吊打gty.gty见大势不好机智的分出了n个分身,但还是被人多势众的蒟蒻抓住了.蒟蒻们将 n个gty吊在n根绳子上,每根绳子穿过天台的一个洞.这n根绳子有一个公共的绳结x.吊好gty后蒟蒻们发现由于每个gty重力不同,绳 结x在移动.蒟蒻wangxz脑洞大开的决定计算出x最后停留处的坐标,由于他太弱了决定向你求助. 不计摩擦,不计能量损失,由于gty足够矮所以不会掉到地上. Input 输入第…
吊打XXX bzoj-3680 题目大意:在平面上给定n个点,每个点有一个权值.请在平面上找出一个点(不一定在这n个点内找)使得这个点到n个点的距离*权值最小,即求这n个点的重心. 注释:$1\le n\le 10^4$,$-10^5\le x_i,y_i\le 10^5$. 想法: 模拟退火裸题. 身为一个随机化算法,模拟退火在时间允许的情况下是完全由于爬山的.模拟退火,说白了就是有一定的接受差解的概率,而爬山算法不会接受错解.换言之,爬山是模拟退火的一种极端情况. 模拟物理的降温,就是模拟退…
Description gty又虐了一场比赛,被虐的蒟蒻们决定吊打gty.gty见大势不好机智的分出了n个分身,但还是被人多势众的蒟蒻抓住了.蒟蒻们将 n个gty吊在n根绳子上,每根绳子穿过天台的一个洞.这n根绳子有一个公共的绳结x.吊好gty后蒟蒻们发现由于每个gty重力不同,绳 结x在移动.蒟蒻wangxz脑洞大开的决定计算出x最后停留处的坐标,由于他太弱了决定向你求助. 不计摩擦,不计能量损失,由于gty足够矮所以不会掉到地上. Input 输入第一行为一个正整数n(1<=n<=1000…
吊打XXX Time Limit: 10 Sec  Memory Limit: 128 MB[Submit][Status][Discuss] Description gty又虐了一场比赛,被虐的蒟蒻们决定吊打gty. gty见大势不好机智的分出了n个分身,但还是被人多势众的蒟蒻抓住了. 蒟蒻们将n个gty吊在n根绳子上,每根绳子穿过天台的一个洞.这n根绳子有一个公共的绳结x. 吊好gty后蒟蒻们发现由于每个gty重力不同,绳结x在移动. 蒟蒻wangxz脑洞大开的决定计算出x最后停留处的坐标,…
推荐博客:模拟退火总结(模拟退火)by FlashHu.模拟退火的原理,差不多就是不断地由现有的值不断地试探,不断地转到更优的值,并在一定概率下转到较差的值. 题目传送门:luogu1337 [JSOI2004]平衡点 / 吊打XXX 题目转述:平面上有n个点,每个点有自己的位置\(xi\),\(yi\)和权值\(wi\).求一个新点的位置\(x\),\(y\),使得该点到其余所有点距离与权值之积的和最小.也即\(\sum\limits_{i=1}^n sqrt((x-x[i])^2+(y-y[…
第一道模拟退火 重心嘛,就是要找到一个点,使其到所有点距离*该点权值和最小 思路:初始化一个T,mint,当T大于mint时,每次随机一个解,如果解比当前解优,直接转移,否则,以某概率(与T正相关)转移,并不断降温,最后向四周爬山 感觉思路比较清晰,但好多细节不太明白,比如初始化的T,mint,以及退火的速度,前后改了几十遍吧.还是要多做题,找感觉...... #include<cstdio> #include<cstring> #include<iostream> #…
题目描述 如图:有n个重物,每个重物系在一条足够长的绳子上.每条绳子自上而下穿过桌面上的洞,然后系在一起.图中X处就是公共的绳结.假设绳子是完全弹性的(不会造成能量损失),桌子足够高(因而重物不会垂到地上),且忽略所有的摩擦. 问绳结X最终平衡于何处. 注意:桌面上的洞都比绳结X小得多,所以即使某个重物特别重,绳结X也不可能穿过桌面上的洞掉下来,最多是卡在某个洞口处. 输入输出格式 输入格式: 文件的第一行为一个正整数n(1≤n≤1000),表示重物和洞的数目.接下来的n行,每行是3个整数:Xi…
题目链接 一个比较好的解释? 模拟退火(Simulated Annealing,SA): (1)初始化一个温度(充分大).初始解状态S.每个T值的迭代次数. (2)对i=1,...,L,做(3)至(7)步. (3)产生新解S'. (4)计算Δt=C(S')-C(S),其中C(S)为评价函数. (5)若Δt<0,则接受新解S'作为当前解:否则以exp(-Δt/(kT))的概率接受S'作为当前解(k为玻尔兹曼常数,一般不管它?) (6)如果满足终止条件,则输出当前解作为最优解,结束程序. 终止条件通…
题目描述 如图:有n个重物,每个重物系在一条足够长的绳子上.每条绳子自上而下穿过桌面上的洞,然后系在一起.图中X处就是公共的绳结.假设绳子是完全弹性的(不会造成能量损失),桌子足够高(因而重物不会垂到地上),且忽略所有的摩擦. 问绳结X最终平衡于何处. 注意:桌面上的洞都比绳结X小得多,所以即使某个重物特别重,绳结X也不可能穿过桌面上的洞掉下来,最多是卡在某个洞口处. 输入输出格式 输入格式: 文件的第一行为一个正整数n(1≤n≤1000),表示重物和洞的数目.接下来的n行,每行是3个整数:Xi…
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3680 https://www.luogu.org/problemnew/show/P1337 模拟退火大概是从当前状态出发,随机一个状态(温度越高,这个状态与原状态越不同):该状态比原状态优,则直接变成该状态,不然以概率(温度越高,概率越大)变成该状态:可以一边更新答案,更新答案就没概率一说,只往最优的方向更新,即刚才的概率是为了改变原状态使得可以通过该状态找到新的可能更优的状态. 弄这些…
题目:https://www.luogu.org/problemnew/show/P1337 https://www.lydsy.com/JudgeOnline/problem.php?id=3680 模拟退火!其实就是随机移动产生解,而且幅度越来越小,以一定的概率接受不优的解: 设置一个“初温”,每次变小,作为移动的幅度和判断的系数之一: exp 是以 e 为底的幂,这个判断依据似乎是个公式: 然后过程中保留一个最优解作为最后的答案: 洛谷那道题 n <= 1000,所以 eps 设了 1e-…
问题描述 LG1337 题解 模拟退火模板 记住概率公式: \(exp(\frac{dealt}{T}) \times rand \ge R_A^ND^M_AX\) zzk太欧了,我交了一版没过他来了一下就A了. \(\mathrm{Code}\) #include<bits/stdc++.h> using namespace std; template <typename Tp> void read(Tp &x){ x=0;char ch=1;int fh; while(…
传送门 解题思路 学习了一下玄学算法--模拟退火,首先要求平衡处,也就是求势能最小的地方,就是求这个点到所有点的距离*重量最小.剩下的几乎是模拟退火的板子了. #include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> using namespace std; ; const double delta = 0.98; inlin…
链接 https://www.luogu.org/problemnew/show/P1337 思路 交了好多发,都是wrong 初始值取平均数就1A了 真的是玄学的算法 代码 // luogu-judger-enable-o2 #include <bits/stdc++.h> using namespace std; const double eps=1e-15; int read() { int x=0,f=1;char s=getchar(); for(;s>'9'||s<'0…
每次把元素随便扔随机一个初始解,退火时每次随机拿一个元素扔到随机一个集合里,当温度高时因为状态不稳定扔到那个元素和最小的里边. 如果新解优,更新ans. 把原式拆一下,就可以用int存了. bzoj 2428 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<cmath> #define N 55 using namespace s…
(总计:共66题) 4.18~4.25:19题 4.26~5.2:17题 5.3~5.9: 6题 5.10~5.16: 6题 5.17~5.23: 9题 5.24~5.30: 9题 4.18 [BZOJ3786]星系探索(伪ETT) [BZOJ4337][BJOI2015]树的同构(树的最小表示法) [BZOJ3551][ONTAK2010]Peaks(加强版)(Kruskal重构树,主席树) [CTSC2017]游戏(Bayes定理,线段树) 4.19 [CTSC2017]吉夫特(Lucas定…
3680: 吊打XXX Time Limit: 10 Sec  Memory Limit: 128 MBSec  Special Judge Submit: 308  Solved: 94 [Submit][Status] Description gty又虐了一场比赛,被虐的蒟蒻们决定吊打gty.gty见大势不好机智的分出了n个分身,但还是被人多势众的蒟蒻抓住了.蒟蒻们将 n个gty吊在n根绳子上,每根绳子穿过天台的一个洞.这n根绳子有一个公共的绳结x.吊好gty后蒟蒻们发现由于每个gty重力不…
题目链接:BZOJ - 3680 题目分析 这道题是SLYZ的神犇把JSOI的平衡点那道题改了一下题面变成了吊打GTY神犇..Orz 第一次写模拟退火,只能照着别人的代码写,我看的是PoPoQQQ神犇的代码,于是我基本上完全照着写的,代码没什么区别= = 首先是模型的转化,一看这道题目是神奇的物理题,我完全就不会啊. 搜题解,题解是这样的:根据“一切自然变化进行的方向都是使能量降低,因为能量较低的状态比较稳定”的基本物理原理,这个绳结的移动趋势是使整个系统的总能量降低. 这个系统是一个机械系统,…
3680: 吊打XXX Time Limit: 10 Sec  Memory Limit: 128 MBSec  Special JudgeSubmit: 3192  Solved: 1198[Submit][Status][Discuss] Description gty又虐了一场比赛,被虐的蒟蒻们决定吊打gty.gty见大势不好机智的分出了n个分身,但还是被人多势众的蒟蒻抓住了.蒟蒻们将 n个gty吊在n根绳子上,每根绳子穿过天台的一个洞.这n根绳子有一个公共的绳结x.吊好gty后蒟蒻们发现…
[BZOJ3680]吊打XXX(模拟退火) 题面 BZOJ 题解 模拟退火... 就是模拟退火 然后这题有毒 各种调参数之后终于\(AC\)了.. 这种题就是玄学呀... 温度要调大 最后跑完还要向四周多\(rand\)几次 保证能够找到最优解... #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<cmath> #include<…
简介 就是模拟退火的物理过程,每次随机逼近乘上温度,以\(e^{\Delta/T}\)的概率接受答案,随机一个概率比较 然后就是调参+乱搞 题目 Bzoj3680:吊打xxx 代码 # include <bits/stdc++.h> # define RG register # define IL inline # define Fill(a, b) memset(a, b, sizeof(a)) using namespace std; typedef long long ll; const…
题目描述 gty又虐了一场比赛,被虐的蒟蒻们决定吊打gty.gty见大势不好机智的分出了n个分身,但还是被人多势众的蒟蒻抓住了.蒟蒻们将n个gty吊在n根绳子上,每根绳子穿过天台的一个洞.这n根绳子有一个公共的绳结x.吊好gty后蒟蒻们发现由于每个gty重力不同,绳结x在移动.蒟蒻wangxz脑洞大开的决定计算出x最后停留处的坐标,由于他太弱了决定向你求助. 不计摩擦,不计能量损失,由于gty足够矮所以不会掉到地上. 分析 模拟退火的链接:https://www.cnblogs.com/chho…
Description gty又虐了一场比赛,被虐的蒟蒻们决定吊打gty.gty见大势不好机智的分出了n个分身,但还是被人多势众的蒟蒻抓住了.蒟蒻们将n个gty吊在n根绳子上,每根绳子穿过天台的一个洞.这n根绳子有一个公共的绳结x.吊好gty后蒟蒻们发现由于每个gty重力不同,绳结x在移动.蒟蒻wangxz脑洞大开的决定计算出x最后停留处的坐标,由于他太弱了决定向你求助.不计摩擦,不计能量损失,由于gty足够矮所以不会掉到地上. Input 输入第一行为一个正整数n(1<=n<=10000),…
//yy:今天简单入门学了下ORZ 爬山算法:兔子朝着比现在高的地方跳去.它找到了不远处的最高山峰.但是这座山不一定是珠穆朗玛峰.这就是爬山算法,它不能保证局部最优值就是全局最优值. 模拟退火:兔子喝醉了.它随机地跳了很长时间.这期间,它可能走向高处,也可能踏入平地.但是,它渐渐清醒了并朝最高方向跳去.这就是模拟退火. 题目链接:BZOJ 3680: 吊打XXX 1<=n<=10000,-100000<=xi,yi<=100000 题意:找一个点,使得最小 #include <…
题目描述 如图:有n个重物,每个重物系在一条足够长的绳子上.每条绳子自上而下穿过桌面上的洞,然后系在一起.图中X处就是公共的绳结.假设绳子是完全弹性的(不会造成能量损失),桌子足够高(因而重物不会垂到地上),且忽略所有的摩擦. 问绳结X最终平衡于何处. 注意:桌面上的洞都比绳结X小得多,所以即使某个重物特别重,绳结X也不可能穿过桌面上的洞掉下来,最多是卡在某个洞口处. 输入输出格式 输入格式: 文件的第一行为一个正整数n(1≤n≤1000),表示重物和洞的数目.接下来的n行,每行是3个整数:Xi…
[洛谷1337] 吊打XXX/平衡点 (模拟退火) 题意 n个重物(x,y,w),求平衡时x的位置(x,y) 分析 模拟退火基础题,基于随机数的优化算法,时间复杂度玄学,参数玄学,能不能AC看脸,当然如果参数设定的好,并且在规定时间内多跑几次退火算法,并且每次退火时以上一次退火得到的最优解作为新一次退火的起点,AC的概率还是很大的. ACcode #include <bits/stdc++.h> #define fre freopen("data.in","r&q…
洛谷题目传送门 很可惜,充满Mo力的Mo拟退火并不是正解.不过这是一道最适合开始入手Mo拟退火的好题. 对模拟退火还不是很清楚的可以看一下 这道题还真和能量有点关系.达到平衡稳态的时候,物体的总能量应该是最小的.而总的能量来源于每个物体的重力势能之和.要想让某个物体势能减小,那就让拉着它的绳子在桌面下方的长度尽可能的长,也就是桌面上的要尽可能短.由此看来,某个物体的势能与桌面上的绳子的长度.物体重量都成正比. 于是,为了找到平衡点,我们要找一个点使得\(\sum_{i=1}^n d_i*w_i\…
题目要求 最小(dis表示绳结到点i的距离),就是个广义费马点的题,模拟退火裸题QAQ 模拟退火就是优化后的爬山算法,一开始先随机一个平均点,接下来如果随机到的点比当前点劣,温度比较高的话也有几率跳过去,这样就能跳出一个局部最优解,随着温度降低,跳到劣点的概率越来越小 好喵喵的算法! (这题好像黄学长直接爬山算法也过了,模拟退火贼慢T^T #include<iostream> #include<cstring> #include<cstdlib> #include<…
题目链接 正解就算了吧,谁叫我理生化 语数外 政史地都菜呢 模拟退火真玄学,不知道发生了什么就跑出答案了,原理就算了吧,能用(pianfen)就好. 当重物平衡时,势能一定是最小的,于是当我随机出一个点时,累加所有重物到这个点的距离乘这个重物的质量的积,这样就能反映势能的相对大小了. 为什么不用考虑方向?自己脑补脑补就好了,反正平衡时这个东西也一定最小. 然后就是跑看脸的\(SA\)了,这个八位质数真神奇,交了很多遍都没过,一交这个就过了. #include <cstdio> #include…
点此看题面 大致题意: 一个平面上有\(n\)个点,每个点有1个权值,现在要选择平面上的一个点,使这\(n\)个点的权值乘上到达选定点的距离之和最小. 模拟退火 我们可以用模拟退火来做这道题. 先将\((0,0)\)设定为答案,随后不断选取一个新的坐标,比较选择该点时的代价与当前答案的代价.若小于当前答案的代价,则更新答案,否则,将有一定概率更新答案(更新坐标的幅度随时间的增大而减小,更新答案的概率随时间的增大以及两个代价之差的增大而减小). 只要多模拟退火几遍,或者保持一颗虔诚的心,就能过了.…