摘要: 概念 模拟退火是随机化算法,可以用来解决一类不是单峰函数的问题。 其优于爬山算法的原因是其能通过接受当前最优解附近的非最优解,来跳出局部最优解。 对于新状态得到的解,若其更优则更新答案,否则以一定概率来判断是否接受新状态。 设温度为 \(T\),新状态和当前状态的能量差为 \(\Delta E(\D 阅读全文
posted @ 2020-08-17 21:43 lhm_liu 阅读(225) 评论(0) 推荐(0) 编辑
摘要: \(DP\) 来做的话会很麻烦,细节会很多,考虑乱搞一些的做法。\(n\) 很小,答案和排列顺序有关,所以考虑模拟退火来解决本题。 产生新状态即为交换当前排列的两个位置。调参时可以采取降低退火次数,升高温度和降温系数来处理,这样正确性会高。 #include<bits/stdc++.h> #defi 阅读全文
posted @ 2020-08-17 21:12 lhm_liu 阅读(196) 评论(0) 推荐(0) 编辑
摘要: 首先对所有询问进行离线处理,因为是网格图,所以考虑用分治来解决。 对 \([1,n]\) 进行分治,对于区间 \([l,r]\),在 \(mid\) 两侧的点对互相要到达一定会经过 \(mid\) 所在的直线,因此每次处理出 \(f_{i,j,k}\) 和 \(g_{i,j,k}\),\(f_{i, 阅读全文
posted @ 2020-08-17 19:14 lhm_liu 阅读(199) 评论(0) 推荐(0) 编辑
摘要: 考虑通过 \(DP\) 来解决本题。设 \(f_{i,j}\) 为考虑了前 \(i\) 个位置且第 \(i\) 个位置为数字 \(j\) 的方案数,\(s_i\) 为 \(\sum\limits_{j=1}^k f_{i,j}\),\(l_{i,j}\) 为位置 \(i\) 往前都是数字 \(j\) 阅读全文
posted @ 2020-08-17 16:35 lhm_liu 阅读(167) 评论(0) 推荐(0) 编辑