首先能够想到是 状压dp模板 取 dp[state,i,j] 表示state状态下倒数第二个岛为i,最后一个岛为j时的最优解, num[state,i,j] 为相应的路径数目,其中 state 的二进制表示的i位为1表示岛i被访问过,反之为0。 则显然当有 边(i,j) 存在时,有如下初值可赋: d ...
分类:
其他好文 时间:
2019-10-09 12:54:57
阅读次数:
81
一、什么是模拟退火算法 1、爬山算法 在了解模拟退火算法之前,先来看一下爬山算法:爬山算法是一种贪心算法,该算法每次从当前的解空间中选取一个解作为最优解,直到达到一个局部最优解。假设函数f(x)的图像如下图:现在使用爬山算法来求f(x)的最大值,若C为当前最优解,则爬山算法搜索到A就会停止搜索,这会 ...
分类:
其他好文 时间:
2019-10-08 14:19:42
阅读次数:
71
P1242 新汉诺塔 此题的最后一个数据点不适用于贪心算法,所以每次将大的优先移到目标位置有很小的概率不是最优解,但是毕竟是最优解的概率还是很大的。所以用模(yi)拟(tong)退(luan)火(gao)就可以了,反正也是随机碰碰运气的。概率嘛~~~~,只要你的srand能过,那就能过啦。 ...
分类:
其他好文 时间:
2019-10-06 17:00:09
阅读次数:
86
贪心是什么? 它其实类似一种思想 就是总问题可以分成许多的子问题 子问题的最优解可以直接推出整个问题 它和动态规划有一定的不同之处 动态规划不能由子问题的最优解推出整个问题的最优解 所以你看都要有一个数组来记录一下嘛 贪心怎么用? 就是说我们把整个问题分成许多的子问题 然后对子问题求得局部最优解 几 ...
分类:
编程语言 时间:
2019-10-05 18:07:35
阅读次数:
85
以后题解还是单独放吧。 A.Divisors 根号筛求所有数的因子,扫一遍去重统计即可。 B.Market 离线询问。把询问和商店都按时间排序,维护一个指针把所有能被当前计划购买的商品都放进来跑一次背包。 注意到话费很大而价值很小,那么把价值作为dp数组下标,后缀取min保证单调后二分查找最优解即可 ...
分类:
其他好文 时间:
2019-10-04 16:36:14
阅读次数:
90
圆锥曲线:椭圆小题解题报告 注意事项: 1. 由于本人水平有限,部分题目解题方法可能非最优解,如有更好方法欢迎在评论区指正。 2. 部分题目讲解可能过于口语化,导致并不符合官方(人教版教材)的要求,请各位在考试中不要学习,使用正确的,符合要求的用语。 3. 本文中可能存在错别字,望发现者在评论区指正 ...
分类:
其他好文 时间:
2019-10-03 23:54:18
阅读次数:
167
题目链接: "走这里" 题目分析: 考虑绝对值的几何意义,显然$b$里的数一定在$a$里出现过 离不离散化问题不大,用下标作第二位状态就行 设$dp[i][j]$表示第$i$个数,高度为$a[j]$时的最优解 方程见代码 代码: cpp include define int long long de ...
分类:
其他好文 时间:
2019-10-03 18:21:45
阅读次数:
77
一般来说,如果题目需要求一个最优解或者最小(大)花费之类的,而且除了暴力之外想不到什么好方法,那么就可能需要用贪心。
通常地,我们猜想一些步骤能不能直接使用贪心,然后再去证明这个贪心是对的。
有时候可能要多想几种贪心才能找到正确的那一种。 ...
分类:
其他好文 时间:
2019-10-02 21:03:36
阅读次数:
130
背包九讲——全篇详细理解与代码实现 https://blog.csdn.net/yandaoqiusheng/article/details/84782655 01背包初始化的细节问题我们看到的求最优解的背包问题题目中,事实上有两种不太相同的问法。有的题目要求"恰好装满背包"时的最优解,有的题目则并 ...
分类:
其他好文 时间:
2019-10-01 20:38:23
阅读次数:
92
题目链接 https://atcoder.jp/contests/agc032/tasks/agc032_e 题解 猜结论好题。 结论是: 按$a_i$从小到大排序之后,一定存在一种最优解,使得以某个位置为界,两边分别首尾匹配,且满足左边的每一对的和都$ include include includ ...
分类:
其他好文 时间:
2019-09-28 17:45:33
阅读次数:
82