学习笔记
文章平均质量分 62
Skyprophet
这个作者很懒,什么都没留下…
展开
-
状压DP学习笔记(一)
首先,什么是状压。所谓状压,就是状态压缩。就是将原来需要很多东西来储存的状态存在一个很小的空间内,并且并不影响动态规划的决策和转移。最简单的例子就是可以将一个地方是否有东西表示成二进制位中的一位。很多东西都可以用状态的压缩,有时不仅仅是DP。举个最简单的例子,USACOchecker这道题,就有一种方法就是用二进制位来确定无法放置的位置,实际原创 2009-08-03 16:42:00 · 822 阅读 · 0 评论 -
分数规划
分数规划啊~这东西怎么说呢~算是一个不算太简单的东西了~这个问题的描述呢也很简单,有线性规划,分数规划也就不难定义~我们给出这样一个问题,f(x)=a(x)/b(x) (b(x)>0)其中a(x),b(x)为连续的实值函数。我们的目的呢~就是让这个东西最小~然后呢,有一个特别bug的方法~~你不是分数吗~分数不是不好求吗~~那我就给你搞成一个多项式~~抱着这样一个想法,我们把这原创 2010-04-27 11:10:00 · 1192 阅读 · 0 评论 -
高斯消元法
这个东西呢,其实现在看蛮简单的~但是我一直就是觉得很悲剧……数学这种东西呢,如果用算法去做,就会有很多的问题,其中最严重的也就是精度问题了。高斯消元也不例外,高斯消元中精度的问题是很难处理的,因为他的精度不能太大,也不能太小。因为消元的过程中对0的判断是极度敏感的。如果判断错误,会导致整个算法的错误。当然裸的解方程的题现在来说已经非常少了,都和同余之类的东西结合在一起。还有异或方程之类的。原创 2010-04-22 12:21:00 · 718 阅读 · 0 评论 -
Splay Tree 伸展树
写在前面:我是巨菜……代码巨丑~请各种大牛不要鄙视……Splay也就是传说中的伸展树~以前很想学,但是因为旋转比较晕,所以一直没学~这回因为决定学了,所以就看了看,写了写。经历了3个小时的摸索……终于写出来了……首先说我用的题,是一道专门测平衡树的题: 给出N(Nch=1表示插入一个值为k的数ch=2表示查询第k小的数ch=3表示删除值为k的数(k一定存在)我之前的平衡树速度测试和学习原创 2010-04-20 19:19:00 · 1081 阅读 · 1 评论 -
Treap
具体是啥我就不说了,应某位同学的要求贴上来。曾经测过,速度还说的过去,在所有的平衡树版本里排中等偏上~以下是几个神牛标程和几个同学的测试结果,差的并不太多~【代码】:program sbt;const inf=1000000;type ntype=record left,right,data,key,count,size:longint原创 2010-04-18 12:59:00 · 644 阅读 · 2 评论 -
树链剖分
首先声明~这个东西不到万不得已我绝对不会再写了!!这个叫做树链剖分的东西是一个非常非常经典的树的分治的方法。本质就是将树拆成链,使得在树上的操作转化为链上的操作。那么怎么将树转化为链呢?这就有一个非常近点的算法,叫做:重链剖分法我们首先进行一次DFS求出size(这个我不说大家都知道是什么东西)。然后第二次DFS,每一次选择size最大的一个儿子。这样我们就得到了一条名副其实的“重链”原创 2010-04-17 23:05:00 · 2479 阅读 · 1 评论 -
后缀数组(Suffix Array)
这个悲剧的东西在经历了半个月的研究后,终于研究明白了…………学会了之后突然发现,这个东西实在是太nb了~~首先还是先说一说这个东西的精髓~所谓后缀数组就是把一个整串的所有后缀的信息以一种比较高效的方式提取出来。而这种工具就是后缀数组。为什么我们偏偏选择了后缀呢?因为我们发现了了一个非常不错的现象——整个串的所有子串实际上就是所有后缀的一个个前缀。这样,几乎所有类型的字符串问题都可以变成后缀原创 2010-03-17 19:45:00 · 3844 阅读 · 0 评论 -
RMQ问题的几种解决方案
RMQ作为学习Suffix Array的基本知识之一,我想在写SA总结之前写下这一部分的知识。RMQ问题可以算是经典问题中的经典,目的就是希望用较短的时间完成求区间最小值的操作。方法有很多种,最简单的直接线性统计的效率极其低下,也比较白痴,差不多都应该会。下面讲下几个比较好的RMQ问题的算法。方法一:线段树线段树作为维护区间性质的最佳利器,绝对是不错的选择。写起来可以递归,非常原创 2010-03-13 20:28:00 · 2673 阅读 · 5 评论 -
最小费用最大流 zkw算法
最小费用最大流的算法有很多种,经典的就是EK+SPFA。但是时间效率确实令人不敢恭维~最近小小的学习了一下传说中的费用流的神算法——zkw算法。(P.s. 以其发明者zkw神牛的名字命名) 该算法可以有效地通过修改距离标号的方法避免反复进行最短路运算的部分省去,基本算法类似KM算法的顶标修改。基本思想就是:采用距离标号法,若能增广则无限增广,反之更新距离标号,直到无法更新为止。本人原创 2009-09-21 16:02:00 · 4363 阅读 · 7 评论 -
计算几何总结(二)
凸包的定义:包含它的最小的凸图形或最小凸区域。 一些特性: 1、任意两点间的定比分点一定被包含在凸包上。 2、凸包是基于原有点集或原多边形,相比于他们,运用凸包大大降低了时空复杂度。(点的数量大大减少,增加了一个序)。说白了就是一个橡皮筋包住所有的点,得到的那个凸多边形,就叫做凸包。凸包有很多的算法,基本上的思想就是利用一个顺序,从一条边出发沿着一个方向进行运算。 经典算法:gra原创 2009-09-18 14:25:00 · 727 阅读 · 0 评论 -
计算几何总结(一)
观摩了一下cai0715神牛的日常学习笔记。决定稍稍总结一下关于计算几何的种种知识。先说最简单的,就是向量的问题。一个向量的坐标法表示就是(x,y)。向量的运算有加减,点乘和叉乘。点乘很简单,就是|a||b|cos,得到的是一个数。叉乘得到的是一个向量,大小是|a||b|sin,这个值是两个向量组成的三角形面积的二倍。如果用坐标表示叉积的结果就是x1y2-x2y1(行列式乘开)原创 2009-09-16 14:57:00 · 628 阅读 · 0 评论 -
网络流算法——SAP
我本来是只会EK的,就是那个最经典,也是最白痴的算法……(不过有些时候正经很好用呢~)昨天和王正宇大牛在机房研究了一下神奇的SAP算法,今天又拿他做了一些网络流的题目,发现确实优化效果极其明显! 我在学的时候看的是DD_engi神牛的讲解。我这里简单总结一下:首先我么先回顾一下EK(这个不会的可以看namiheike写的EK的详解,地址:http://www.oibh.org原创 2009-06-25 12:38:00 · 6213 阅读 · 1 评论 -
状压DP学习笔记(二)
下面的一个很常用的模型就是覆盖的模型。说白了就是一个东西,让你用几种东西覆盖,不允许重叠。问你覆盖满的情况有多少种。这种状压DP就是按照比较长的那个方向划阶段。然后将一行的状态压缩。对于两行之间的转移只有在两行可以互相转化的情况下才可以进行。所以就需要DFS。这个DFS是重点,其核心就是找可以放的空档,然后把他们放进可以放的所有的东西。注意前后的影响和几行之间的相互影响就可以了。具原创 2009-08-05 16:48:00 · 693 阅读 · 0 评论 -
近期杂感~
搞到了点长郡的题~真是各种折磨人啊~不得不承认,各种有难度~有一套标记为“题目基础,认真对待”的题,第一道题就是树套树(普通的还过不了,囧……)模型相当的全,什么网络流,什么DP,什么图论的题应有尽有~难度是CTSC难度,当地的成绩也不是很好~但是人家毕竟比我牛是吧……四月已经byebye了~五月就要去北京……APIO的话,今年是中国出题,觉得就不会特别简单~能考什么样考什原创 2010-05-02 09:55:00 · 1577 阅读 · 3 评论