随笔分类 - 学习笔记
摘要:推荐技术公众号:不爱睡觉的大猪 本来想详细写写LCA和RMQ的东西的,但是觉得积累得还不够而且比较懒就不写了。鉴于都是超经典问题,网上和大量书籍都是很好的学习材料,所以就不想说了 这里只简单说说原理,说说代码实现上面的一些细节和注意问题,并且给出模板 下面写提供几个学习LCA和RMQ的博客,都很通熟
阅读全文
摘要:原文地址 :http://www.byvoid.com/blog/string-hash-compare常用的字符串Hash函数还有ELFHash,APHash等等,都是十分简单有效的方法。这些函数使用位运算使得每一个字符都对最后的函数值产生影响。另外还有以MD5和SHA1为代表的杂凑函数,这些函数几乎不可能找到碰撞。常用字符串哈希函数有BKDRHash,APHash,DJBHash,JSHash,RSHash,SDBMHash,PJWHash,ELFHash等等。对于以上几种哈希函数,我对其进行了一个小小的评测。Hash函数数据1数据2数据3数据4数据1得分数据2得分数据3得分数据4得分平均
阅读全文
摘要:例题:hdu 1828 Picture有两种方法,不过常用的第二种,两种都说一下。第一种:把矩形分成横线和竖线去处理,可知是完全相同的操作,我们来讲下怎么算出横线部分,竖线部分就是照搬即可。将横线保存在一个表中,按横线所处的竖直位置排序(升序),另外每条横线带一个标记值,原矩形的下线为1,上线为-1(对应过去就是插入线段和删除线段)从低到高扫描横线,没扫到一条横线就能计算出一部分横线值。计算方法是算出现在总区间的被覆盖的长度,然后求出与上一次的总区间的覆盖长度的差(即相减求绝对值),因为每次添加了一条线段,如果没有没有使总区间覆盖长度发生变化,说明这条线段其实在多边形的内部,被覆盖掉了,不能计
阅读全文
摘要:推荐技术公众号:不爱睡觉的大猪 分析: 1.矩形比较多,坐标也很大,所以横坐标需要离散化(纵坐标不需要),熟悉离散化后这个步骤不难,所以这里不详细讲解了,不明白的还请百度 2.重点:扫描线法:假想有一条扫描线,从左往右(从右往左),或者从下往上(从上往下)扫描过整个多边形(或者说畸形。。多个矩形叠加
阅读全文
摘要:可能要求解两种问题,一种是完成所有的任务的最早时间,这个其实只是求解关键路径问题的一部分,另一种是要输出关键路径(关键路径不一定是唯一的)定义:关键路径就是求始点到终点的一条最长路径,通过求各顶点的最早完成时间来求关键路径两个重要概念(容易混淆,容易越想越糊涂)1.最早完成时间:自始点(记为V1)开始沿最长路径(按权计算)到达Vi所需要的时间,成为Vi的最早完成时间,记为TE[i] TE[1]=0; (准确来说应该是拓扑排序中的第一个点为0,而第1个点不一定只有1个,而且编号不一定为1,这里只是举一个例子,另外时间也不一定是0,看从什么时候开始计时) TE[j] = max (TE[i] ..
阅读全文
摘要:最小点覆盖和最小路径覆盖的定义就不说了,百度可以找到但是百度一般找不到证明,而且很多证明可能是错的,或者不严谨后来在Matrix67博客找到了最小点覆盖的证明,是看过最严谨的了下面是原文地址http://www.matrix67.com/blog/archives/116但是最小路径覆盖还是找不到可靠的证明,不过幸好黑书中有提及,虽然不详细,但是如果看明白了最小点覆盖的证明,最小路径覆盖也不难了下面是黑书的原文,关于最小路径覆盖的证明最小路径覆盖:用尽量少的不想交的简单路径覆盖有向无环图G的所有顶点。我们给这个图建立一个二分图模型,把所有顶点拆为两个:X结点i和Y结点i‘,如果图G中存在有向边
阅读全文
摘要:在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序。一个排列中逆序的总数就称为这个排列的逆序数。逆序数为偶数的排列称为偶排列;逆序数为奇数的排列称为奇排列。如2431中,21,43,41,31是逆序,逆序数是4,为偶排列。也是就说,对于n个不同的元素,先规定各元素之间有一个标准次序(例如n个 不同的自然数,可规定从小到大为标准次序),于是在这n个元素的任一排列中,当某两个元素的先后次序与标准次序不同时,就说有1个逆序。一个排列中所有逆序总数叫做这个排列的逆序数。————————————————————————————————————求解一个序列逆序
阅读全文
摘要:资料来源百度百科http://baike.baidu.com/view/2499752.htm卡特兰数又称卡塔兰数,是组合数学中一个常出现在各种计数问题中出现的数列。由以比利时的数学家欧仁·查理·卡塔兰 (1814–1894)命名。卡特兰数前几项为 : 1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 9694845, 35357670, 129644790, 477638700, 1767263190, 6564120420, 24466267020, 9148
阅读全文
摘要:笔算开根法: 例1:求①将37625从个位起,向左每两位分一节:3,76,25②找一个最大的数,使它的平方不大于第一节的数字,本题中得1(1的平方为1,而2的平方为4,大于3,所以得1).把1写在竖式中3的上方。③将刚才所得的1平方写在竖式中3的下方,并相减,然后将76移写在本行(如图)④将前面所得的1乘20,再加一个数a,写在竖式的左方(如图),并同时把a写在竖式的上方对准6。而这个所谓的a,是需要试验的,使它与(20+a)的积最大且不超过276.本题中所得的a为9⑤用9乘29,再用276减去,所得的差写在下方⑥继续反复运用步骤④和⑤。如果后面的数字不足,则补两个0,继续运算。如果最后的余数
阅读全文
摘要:看了《数论概论》的相关章节-《线性方程与最大公因数》首先是要证明一个方程必定有整数解ax+by=gcd(a,b); 为方便 g=gcd(a,b), ax+by=g这个证明有些复杂就不写了,而如何构造一个可行解(x1,y1)其实也在证明过程中在得到一个可行解后就可以得到无数组解,他们是(x1-k*(b/g) , y1+k*(a/g)) , (其中g=gcd(a,b),k是整数)而对于方程ax+by=c,只要c是g倍数那么就有整数解,否则没有可以这样思考: 对于a' = b, b' = a % b 而言,我们求得 x, y使得 a'x + b'y = Gcd(a
阅读全文
摘要:黑书中(221页,第2章,数学方法与常见模型)费波那列素数定理费波那列素数:若某个费波那列数和比它小的所有费波那列数互质,则称它为费波那列素数若a是b的倍数,则fa是fb的倍数所以提示我们费波那列数和它的下标有关从第5个费波那列书开始,某项为费波那列素数当且仅当它的项数为素数其中最开始两个特殊的,第3,4项fib为2,3,它们是费波那列素数后面的则是第5,7,11,13,17,19,23,29………………项fibs是费波那列素数而素数表为2,3,5,7,11…………所以为了方便处理我们将素数表前两项改为3,4经典题目http://www.cnblogs.com/scau20110726/arc
阅读全文
摘要:模运算及其性质本文以c++语言为载体,对基本的模运算应用进行了分析和程序设计,以理论和实际相结合的方法向大家介绍模运算的基本应用。。基本理论基本概念:给定一个正整数p,任意一个整数n,一定存在等式 n = kp + r ;其中k、r是整数,且 0 ≤ r < p,称呼k为n除以p的商,r为n除以p的余数。对于正整数p和整数a,b,定义如下运算:取模运算:a % p(或a mod p),表示a除以p的余数。模p加法:(a + b) % p ,其结果是a+b算术和除以p的余数,也就是说,(a+b) = kp +r,则(a + b) % p = r。模p减法:(a-b) % p ,其结果是a-
阅读全文
摘要:欧拉函数用符号φ表示,φ(n)表示小于等于n的正整数数中与n互质的数的个数φ(1)=1 ; 1φ(2)=1 ; 1φ(3)=2 ; 1,2φ(4)=2 ; 1,3φ(5)=5 ; 1,2,3,4φ(6)=2 ; 1,5 φ(7)=6 ; 1,2,3,4,5,6φ(8)=4 ; 1,3,5,7…………………………其中当n为素数时,φ(n)=n-1; 然后再将这个问题推广到一般性——1.怎么求任意的φ(n)。2.怎么求n以内所有的φ(n)1.对于任意的n,φ(n)=n x (1-p1) x (1-p2) x (1-p3) …………(1-pm)其中p1,p2,p3……pm是n能分解出...
阅读全文
摘要:今天做了一道本原勾股数组的入门题,读了数论概论的对应章节,自己也在纸上证明了一次,现在做个简单记录数论经典问题:构造本原勾股数组(PPT):a^2+b^2=c^2 , 其中a,b,c两两互质勾股数组的个数是无限个,一般的勾股数组并没有太大的研究价值,但是本原勾股数组(PPT)则有,PPT满足a,b,c两两互质,其他的勾股数组都是通过PPT不断翻倍得到的,所以研究本原勾股数组的本质和性质很重要1.证明a和b必定一奇一偶,并可以推导出c一定是奇数 。 证明后我们约定a是奇数,b是偶数,c为奇数,但a和b的大小不能确定2.a^2+b^2=c^2 ---> a^2=c^2-b^2=(c+b)*(
阅读全文
摘要:生成随机数据一.生成int型数据简单地生成n个随机数据(数字大小在int范围内)#include <cstdio>#include <cstdlib>#include <cmath>int main(){ int n=60; for(int i=1; i<=n; i++) printf("%d ",rand()); printf("\n"); return 0;}每次运行该程序得到的随机数都是一样的,因为种子相同改变种子,每次运行程序可以得到不同的随机数得到种子需要一个函数srand(m); 参数m决定了种子,那
阅读全文
摘要:原文出处:http://www.indiangeek.net/wp-content/uploads/Programmer%20competency%20matrix.htm译文出处:http://static.icybear.net/%5BCN%5DProgrammer%20competency%20matrix.htm[译文]程序员能力矩阵 Programmer Competency Matrix注意:每个层次的知识都是渐增的,位于层次n,也蕴涵了你需了解所有低于层次n的知识。计算机科学 Computer Science2n(Level 0)n2(Level 1)n(Level 2)log(
阅读全文
摘要:①判定某些位置是否为1,如判定2、4位置为1,则转化为判断x|0101是否等于x。②判定某些位置是否为0,如判定2、4位置为0,则转化为判断x&1010是否等于x。③将某些位置转化为1,如2、4位置转化为1,则令x=x|0101。④将某些位置转化为0,如2、4位置转化为0,则令x=x&1010。
阅读全文
摘要:最小费用最大流一般用邻接表来实现,因为邻接矩阵不能处理平行边等等;而一条有向边是要储存两条信息,无向图的话要拆成两条有向边处理,相当于变为4条边,这也是邻接矩阵不能做到的然后最小费用最大流的原理就不讲了,讲一下实现的要注意的问题和一些技巧1.用结构体数组来保存边,最好从下标0开始保存不要从下标1开始保存,因为增广的时候需要用到位运算,从下标1保存不利于位运算2.为了满足上面的位运算的要求,除了从下标0开始外,储存边的顺序也有讲究,以一条无向边做例子(u,v),cap,cost,flow=0; //一开始流量为0/****有向边u---->v****/add(i,u,v,cap,cost,
阅读全文
摘要:【转】关于差分约束(转载)个人认为比较好差分约束系统(本文假设读者已经有以下知识:最短路径的基本性质、Bellman-Ford算法。) 比如有这样一组不等式: X1 - X2 <= 0X1 - X5 <= -1X2 - X5 <= 1X3 - X1 <= 5X4 - X1 <= 4X4 - X3 <= -1X5 - X3 <= -3X5 - X4 <= -3 不等式组(1) 全都是两个未知数的差小于等于某个常数(大于等于也可以,因为左右乘以-1就可以化成小于等于)。这样的不等式组就称作差分约束系统。 这个不等式组要么无解,要么就有无数组解。因为如
阅读全文
摘要:其本质说白了就是一句话——水流的最大流量取决于最细的水管的容量如果一条弧的两个顶点分别属于顶点集S和T(一个顶点在S,另一个在T),那么这条弧称为割CUT(S,T)的一条割边。从S指向T的割边是正向割边;从T指向S的割边是逆向割边。割CUT(S,T)中所有正向割边的容量和称为割CUT(S,T)的容量。不同割的容量不同。定理一:如果f是网络中的一个流,CUT(S,T)是任意一个割,那么f的值等于正向割边的流量与负向割边的流量之差。推论1:如果f是网络中的一个流,CUT(S,T)是一个割,那么f的值不超过割CUT(S,T)的容量。推论2:网络中的最大流不超过任何割的容量 定量2:在任何网络中,如果
阅读全文