算法复习
文章平均质量分 78
JimCell
我不过一只细胞,众大神轻喷……
展开
-
算法复习——堆排
Long long ago,我曾经想过要写堆排(话说已经是刚开始写二分那个博客的时候了),后来好久没写,现在总算想到要写了……好了,进入正题。我以前曾经自己打过一个课件,现在打算放在CSDN下载那里,就当是放基础知识了,现在写写一道题的题解……PPT网址如下(下载者先交1积分……):http://download.csdn.net/detail/u014120397/9472391原创 2016-03-25 13:57:37 · 264 阅读 · 0 评论 -
POJ2406——KMP
玄学的KMP算法……点击看题题意是给一个字符串,求最小循环节的循环次数按kmp的一般思路,我们先来求一个p数组(一般叫next数组),p[i]表示模式串第i位如果和文本串当中某一位不匹配、则需退回p[i]位重新和这一位匹配。明显地,对于模式串来讲,第1位到第p[n]位和第n-p[n]位到第n位是匹配的。如果n%(n-p[n])=0,那么重复连续子串存在且长度位n-p[n](我会说我原创 2016-09-24 14:21:35 · 341 阅读 · 0 评论 -
BZOJ1483——链表
点击看题这题其实可以用链表随意乱搞……将每个颜色做成一个链表(然而可以不用指针),链表里面存这些颜色的起始点、终止点、前继点、个数等信息然后变颜色时就用启发式合并,将少的颜色接在多的颜色后面就可以了……吗?并不是,比如说我把颜色1染成颜色2,但是颜色2的个数小于颜色1的个数的话,那么颜色2接在颜色1后面。但是如果接下来找颜色2的链表时,它就不见了……因此我们要加开一个bel原创 2016-09-17 15:51:42 · 324 阅读 · 0 评论 -
扩展欧几里得算法
其实我最近在想要不要把写堆排序的计划取消掉……毕竟最近在忙GDKOI,GDKOI出堆排的可能性又实在不大…………好吧,扯远了。N周后DWJED大神要将扩展欧几里得算法,说实话,其实我之前也学过这个了,不过由于DWJED大神要讲我还是决定复习一下这个,毕竟NOIP之前复习(详见我NOIP2015的总结)的时候发现快把这事忘光了……其实扩展欧几里得算法(下简称扩欧)是在辗转相除法求最原创 2015-12-28 13:13:32 · 418 阅读 · 0 评论 -
矩阵乘法
前一阵子FYH和XYY连讲了两周的矩阵乘法,不过单学一个矩乘顶多是在学模拟对吧,所以我们要知道这个算法怎么应用,这里的话主要讲怎样优化递推。首先,我们要知道怎样操作矩乘,公式如下:C[i,j]=∑a[i,k]*b[k,j]前提是a的列数和b的行数一致。原创 2015-12-28 13:13:35 · 893 阅读 · 0 评论 -
网络流SAP
折腾了一两个小时(包括昨天校本那1个多小时)总算搞定了神(gui)奇(chu)的SAP算法。本来呢想先用Dinic,结果YoungTree(YoungTree期中考RANK21Orz)曰SAP很快,于是就跑去用SAP了先定义一下一些东西:1.距离标号指假设图上每一条边边权为1时,某一点到终点的距离,当然level[t]=0(t表示终点)2.GAP断层gap[i]表示距离标号原创 2016-05-12 13:52:04 · 539 阅读 · 0 评论 -
算法复习——背包DP问题
额,看到这题目的童鞋不要马上骂博主SB,我要说的其实不是0/1背包问题,而是树型背包。不过其实可以参考一下0/1背包来看这个文章,因为其实很像的。好吧,讲DP最好的方式还是结合题目一起讲——洛谷1273点击有屠龙宝刀题目看这里:http://dev.luogu.org:3308/problem/show?pid=1273首先我们很自然地想到开一个f数组f[i][j]代表了在i节点为原创 2016-04-15 13:53:14 · 346 阅读 · 0 评论 -
算法复习——归并排序
其实这是那篇《二分法》的延伸版本……归并排序跟堆排序一样可以稳定把时间压在O(log n),因为它始终会把区间二分处理,到了不能再二分时便开始合并区间。废话少说,上图更好理解:接下来看一道题:codevs3286这一道题就是典型的逆序对。要使两列火柴距离最小,明显就要让在两序列中相对大小相同的火柴在同一位置于是我们对两列火柴进行排序,排序后用一个pos[a[i].p]=b[i]原创 2016-04-19 14:00:02 · 276 阅读 · 0 评论 -
论二分法的利处
前几天上数学课的时候发生了一件有趣的事情。我们的数学老师在上二分法的课的时候猛批二分法,顺带着连编程也遭殃。结果,1/4个班的人都用一个奇怪的眼神看着我……我只想说,老师,请给我手算一个一千位大整数开方(不用二分法),好吧,我也没法手算。但这恰恰说明了二分法思想和编程的重要性。编程基础的事情出门左拐寻各种书籍吧。今天我主要讲二分法。一.概念二分法,顾名思义就是把一个区间分开来找答案,而数学原创 2015-12-28 13:13:14 · 938 阅读 · 1 评论 -
算法复习——从simcity看kruskal的应用
近期在玩SIMCITY5(详细资料找百度吧),各种坑爹之处就不说了,但是有一个问题却很有意思——天桥。此天桥非彼天桥,SIMCITY5里的天桥是用于连接Megatower(巨塔)使得各个Megatower间连通的利器,可以有效缓解交通压力(毕竟Megatower人口容量巨大)。但是,天桥的造价真的是“天价”,要是真的没有什么钱又想把Megatower都连接起来该怎么办呢?先看下面这原创 2015-12-28 13:17:56 · 695 阅读 · 0 评论 -
算法复习——LazyTag
《铁路大亨2》貌似已经是一个很古老的游戏了……但是它的古老没有妨碍我们对它的研究。今天我来讲讲怎样用线段树来让我们了解收益情况。估计在玩这个游戏时大家会有个问题,那就是即使我们设计了一条很好的铁路线,但是我们没法知道我们规划的火车路线能带来的收益是多少,毕竟有货物价格浮动和火车维护费不定等因素存在。线段树+一定的实践可以比较好地解决这个问题。现在先来假设我们有这么一条铁路,这条原创 2015-12-28 13:26:08 · 998 阅读 · 0 评论 -
树链剖分
前些天提到了GDKOI的事情,严sir说这周六之前要自学一下树链剖分,然后我就去看了一下,这一下就是一周……(某LJ好像看了一周多才搞定)然后ZZX大神讲课的时候我就意识到我的实现方法在细节上严重受到hzwer大神污染……反正大体上是一样的。感谢hzwer大神提供了代码和详细解答:http://hzwer.com/2543.html其实树链剖分的意思就是把一棵树里每条边的情况放到线原创 2015-12-28 13:28:11 · 277 阅读 · 0 评论 -
算法复习——SPFA
市选快到了,尽管我能预测到自己有99.9%的几率要挂(flag),我还是决定好好复习一下,于是找了一道SPFA开切。SPFA就是一个求最短路的算法,其中心思想就是用一个队列来存要扩展的节点,每次从队首元素进行扩展,如果有一点的最短路径值发生变化,那么就把这个点丢进队尾。由于不能让一些点进队次数太多,于是我们再加一个数组进行判重。当然,如果要判图里是否有负环的话,那么可以对每个点的进队次数原创 2016-03-23 14:04:25 · 371 阅读 · 0 评论 -
花式最短路题目总结
好像我最近经常在搞图论的题…………于是我决定把我最近做的图论题当中比较典型的两道放出来======分======割======线======洛谷P1772题目戳这这道题很tm坑啊,细节多到一种尴尬的地步,反正我是不知道怎么回事就过去了。看到这道题可以想到用哪些天走哪条路作为决策点,于是就是DP+SPFA解决这道题了。转移方程如下:f[i]=min(f[i],f[原创 2017-05-04 13:43:02 · 489 阅读 · 0 评论