![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
李煜东算法竞赛进阶指南
大吕廿
这个作者很懒,什么都没留下…
展开
-
最短Hamilton路径
题意: 给定一个n个点的无向图,从0~n-1标记,求0到终点n-1的最短Hamilton路径。 解析: 有n个点,(n*(n-1))/2条边,求从起点0到终点n-1的距离最短的路径。 输入 4 0 1 3 2 1 0 4 3 3 4 0 3 2 3 3 0 输出 8 分析 用朴素算法将所有可能的情况排列组合,再按照先后顺序计算路径求出最短路径,时间复杂度是(n*n!)。 先确定0点,再来计算其...原创 2020-03-19 15:20:50 · 233 阅读 · 0 评论 -
倍增思想和ST算法
这是我从书上理解的一段话,括号内是自己的理解。 当我们递推的时候状态空间很大,线性递推无法满足时间与空间复杂度,那么我们可以通过成倍增长的方式只递推出状态空间中在2的整数次幂位置上的值作为代表 (这个代表能够代表之前倍增达到的代表值或者代表这一段到上一个2的整数次幂区域的代表值,根据题目而异) , (如果这个位置不能够代表或者需要其他位置作为代表) ,那么可以通过“任意整数都可以表示成若干个...原创 2020-03-02 18:05:47 · 287 阅读 · 0 评论 -
七夕祭(前缀和+中位数)bzoj3032
题意 :有n行m列的矩阵,有t个特殊点,只能通过上下或者左右交换,求使这个矩阵变成每行每列的特殊点都一样多,至少需要交换多少次。 分析 :交换行只改变列的 ...原创 2020-02-29 21:32:04 · 169 阅读 · 0 评论 -
Running Median(动态维护中位数)poj3784
题意 :依次读入一个整数序列,当读到奇数时,输出此时数列的中位数。 分析 :暴力是不可能暴力的了, 可以建立两个二叉堆,一个大根堆,一个小根堆,大小顺序在前面一半(1 ~ N/2)的序列排在大根堆,排在后面一半(N/2+1 ~ N)的序列排在小根堆,序列为奇数时将中位数放在大根堆堆顶。 当目前序列为奇数时 :读入下一个数字时判断是否大于大根堆的堆顶,如果大于堆顶就插入到小根堆,如果小于堆顶就...原创 2020-02-20 21:26:38 · 203 阅读 · 0 评论 -
Best Cow Fence(二分)poj2018
题目传送门 题意 :给定正整数数列A,求一个平均数最大的,长度不小于L的(连续的)子段。 分析 :如果没有 “平均数” 和 “长度不小于L” 这两个限制,那么这就是一个最大子段和的问题。我们可以用二分的方法找到一个数,假设这个数是最大的平均数,将数列A中所有位置减去这个数,那么这个题就变成将数列A减去一个数,求大于0的字段和(长度不小于L)。解决了“平均数”问题再来看“子段不小于L”这个限制,我...原创 2020-02-19 12:52:54 · 174 阅读 · 0 评论 -
(摆书)二分答案转化为判定
一个最优解问题中,最优解是唯一的,所以我们可以利用二分的方法来找到这个解,但是我们要如何才能知道这个解呢。将这个最优解问题转化为一个解函数问题 ,“定义域x” 就是这个问题的可行方案,“值域y” 就是这个问题在所有可行方案的执行下得到的 评估值。例如评估值是越高越优,假设最优解是P,则在P的右边(大于P)的评估值中,都不存在一个合理方案x能达到这些评估值,而在P的左边(小于P)的评估值中一定存在一...原创 2020-02-17 23:08:52 · 388 阅读 · 0 评论 -
Tallest Cow(差分)
题意:n个牛站一排,两头牛能够看见的条件是他们之间的牛都比他们小,我们知道第p头牛的高度是H,求每头牛的最大高度可能是多少 题意解析:两头牛能看见,则他们之间的牛至少比他们少1,所以用一个数列表示两头牛之间都减去1,所以这个可以用差分来表示,最后再求前缀和,非在线的话可以用差分来,在线的话就要用树状数组。 #include<iostream> using namespace std; ...原创 2020-02-17 18:26:11 · 282 阅读 · 0 评论 -
激光炸弹bzoj1218(前缀和)
o(n²)时间复杂度,暴力求解法,注意只能创建一个二维数组,创建两个就会爆内存,本题可以用扫描线写。 #include<iostream> #include<cstring> #include<cstdlib> using namespace std; const int N = 5000; int n,r,map[N+5][N+5]; //int map[N+...原创 2020-02-17 17:50:47 · 1262 阅读 · 0 评论 -
IncDec Sequence(差分)
题意:有操作为选择[i,j]区域,使得区域内的数+1或者-1,求:1.至少需要多少操作使得数列中的数都一样。2.保证最少次数前提下最终可得数列可能有多少组。 设b数组为数列a的差分,b[1] = a[1],b[2] = a[2] - a[1],…,b[n] = a[n]-a[n-1]。再设b[n+1] = 0; 解析题意:利用差分的思想,在[i,j]中同时全部+1可以转化为b[i]+1且b[j+1...原创 2020-02-17 17:42:15 · 240 阅读 · 0 评论