算法
南宮逸辰
喜欢听音乐,ACM旅途中
展开
-
POJ-2823-Sliding Window
本来想看一个题的解题报告,无意中搜索到这个题,因为这个题主要是单调队列,所以就做了。关于单调队列请看:http://www.felix021.com/blog/read.php?1965最后再参考了这位大牛的博客:http://blog.csdn.net/hyogahyoga/article/details/7829830然后基本懂了,主要是觉得这位大牛实现得比较简单,膜拜~直原创 2013-02-20 01:13:11 · 411 阅读 · 0 评论 -
大素数判断和素因子分解(miller-rabin,Pollard_rho算法)
传说中的随机算法。效率极高。可以对一个2^63的素数进行判断。可以分解比较大的数的因子。#include#includestring.h>#include#include#include#includeusing namespace std;//**************************************************转载 2014-07-28 22:37:31 · 1410 阅读 · 0 评论 -
二分图匹配
二分图:二分图是这样一个图,它的顶点可以分类两个集合X和Y,所有的边关联的两个顶点恰好一个属于集合X,另一个属于集合Y。二分图匹配:给定一个二分图G,在G的一个子图M中,M的边集中的任意两条边都不依附于同一个顶点,则称M是一个匹配。最大匹配:图中包含边数最多的匹配称为图的最大匹配。完美匹配:如果所有点都在匹配边上,则称这个最大匹配是完美匹配。二分图匹配基本概念:未盖转载 2014-08-19 20:38:03 · 585 阅读 · 0 评论 -
欧拉回路
http://www.cnblogs.com/pandy/archive/2009/05/07/1452209.htmlhttp://bchine.com/mjmjmtl/?p=241参考以上:判断欧拉路,欧拉回路:注意图联通,可以DFS或者并查集一.无向图欧拉回路:每个顶点度数都是偶数欧拉路:所有点度数为偶数,或者只有2个点度数为奇数二转载 2014-08-23 01:06:46 · 534 阅读 · 0 评论 -
博弈论(二):Sprague-Grundy函数
上一期的文章里我们仔细研究了Nim游戏,并且了解了找出必胜策略的方法。但如果把Nim的规则略加改变,你还能很快找出必胜策略吗?比如说:有n堆石子,每次可以从第1堆石子里取1颗、2颗或3颗,可以从第2堆石子里取奇数颗,可以从第3堆及以后石子里取任意颗……这时看上去问题复杂了很多,但相信你如果掌握了本节的内容,类似的千变万化的问题都是不成问题的。现在我们来研究一个看上去似乎更为一般的游戏:给定转载 2014-08-25 16:26:07 · 1914 阅读 · 0 评论 -
博弈论(一):Nim游戏
重点结论:对于一个Nim游戏的局面(a1,a2,...,an),它是P-position当且仅当a1^a2^...^an=0,其中^表示位异或(xor)运算。Nim游戏是博弈论中最经典的模型(之一?),它又有着十分简单的规则和无比优美的结论,由这个游戏开始了解博弈论恐怕是最合适不过了。Nim游戏是组合游戏(Combinatorial Games)的一种,准确来说,属于“Impart转载 2014-08-25 16:26:29 · 1052 阅读 · 0 评论 -
寻找必败态——一类博弈问题的快速解法
博弈是信息学和数学试题中常会出现的一种类型,算法灵活多变是其最大特点,而其中有一类试题更是完全无法用常见的博弈树来进行解答。 寻找必败态即为针对此类试题给出一种解题思路。 此类问题一般有如下特点: 1、博弈模型为两人轮流决策的非合作博弈。即两人轮流进行决策,并且两人都使用最优策略来获取胜利。转载 2014-08-25 16:28:30 · 1079 阅读 · 0 评论 -
无源无汇带上下界的可行流
有上下界网络流问题1.无源汇最大流2.有源汇最大流3.有源汇最小流1.无源汇最大流问题sgu194题意: 给n个点,及m根pipe,每根pipe用来流躺液体的,单向的,每时每刻每根pipe流进来的物质要等于流出去的物质,要使得m条pipe组成一个循环体,里面流躺物质。并且满足每根pipe一定的流量限制,范围为[Li,Ri].即要满足每转载 2014-08-13 08:53:45 · 4506 阅读 · 1 评论 -
高斯消元法(Gauss Elimination) 分析 & 题解 & 模板——czyuan原创
//最近一直在做一个数论专题,后期有待整理,先将有关资料收藏下,在学习高斯消元的时候看了czyuan大牛的此文获益匪浅,czyuan的此份模板可以解决大多高斯问题,当然并不是万能的,其中建立矩阵是难点,需要自己琢磨,并且对于方程组是否有解、解的个数以及自由元等问题也需要自己做题慢慢思考,自己做了两三道题前前后后在建矩阵以及对一些解的问题在Gauss函数中改了几十次,逐渐摸索,还不算掌握的好,有待再转载 2014-08-18 00:40:22 · 958 阅读 · 0 评论 -
红黑树,B树,B+树,B-树 理解
红黑树rbtree 二叉排序树map 就是采用红黑树存储的,红黑树(RB Tree)是平衡二叉树,其优点就是树到叶子节点深度一致,查找的效率也就一样,为logN.在实行查找,插入,删除的效率都一致,而当是全部静态数据时,没有太多优势,可能采用hash表各合适。hash_map是一个hash table占用内存更多,查找效率高一些,但是hash的时间比较费时。总 体来说,ha转载 2014-09-17 01:00:50 · 2107 阅读 · 0 评论 -
阶梯博弈
首先是对阶梯博弈的阐述...博弈在一列阶梯上进行...每个阶梯上放着自然数个点..两个人进行阶梯博弈...每一步则是将一个集体上的若干个点( >=1 )移到前面去..最后没有点可以移动的人输.. 如这就是一个阶梯博弈的初始状态 2 1 3 2 4 ... 只能把后面的点往前面放...如何来分析这个问题呢...其实阶梯博弈经过转换可以变为Nim..把所有奇数阶梯看成N堆石子.转载 2014-07-10 18:49:31 · 536 阅读 · 1 评论 -
算法-主席树
函数式(现在又称主席式。。。)数据结构从来都没写过,感觉这个东西可以挖掘出不少东西出来,于是开一组专题。先根据 Seter 留下的文本做一些记录。。主席树大概是一种离线结构,我以前反正没看到过这东西,所以就自己给他起名字了!如果谁知道这东西的真名,请告诉我!现在我们知道,主席树的全名应该是 函数式版本的线段树。加上附带的一堆 technology。。。。转载 2014-07-24 13:58:26 · 2011 阅读 · 0 评论 -
卡特兰数的理解
今日,老师在课堂上讲了卡特兰数的递推,说实话,除了有时候ACM题中用到以外,我平时并没有怎么去想它的递推公式如何得来。今天总算明白了。 递推公式:f(n)=Ch(n+1)=C(2n,n)/(n+1) (n=1,2,3,...) 其等价于C(2n,n)-C(2n,n+1),思想就是将其中的某个1变为0,即出现减去后面的非法情况。 另类递归式: h(n)原创 2012-12-17 09:32:26 · 1031 阅读 · 0 评论 -
RMQ问题
作者:dylantsou出处:http://blog.csdn.net/dylantsou引言: 在本人的上一篇关于后缀数组的博客中,在例2求最长回文子串中提到过:要求其一个数组中任意区间的最大最小值,是一个RMQ问题,在那篇博客中因为重点是后缀数组,所以对于该问题没有展开讲述,本文就来为大家做进一步的讲解。原理:转载 2013-03-18 19:57:48 · 549 阅读 · 0 评论 -
树状数组
今天因为一个题的关系, 发现树状数组自己仍没完全理解~网上看了一篇很好的文章~转了~树状数组学习系列1 之 初步分析——czyuan原创 其实学树状数组说白了就是看那张图,那张树状数组和一般数组的关系的,看懂了基本就没问题了,推荐下面这个教程:http://www.topcoder.com/tc?module=Static&d1=tutorials&d2=bin转载 2013-05-04 05:10:17 · 518 阅读 · 0 评论 -
ACM博弈
博弈知识汇总有一种很有意思的游戏,就是有物体若干堆,可以是火柴棍或是围棋子等等均可。两个人轮流从堆中取物体若干,规定最后取光物体者取胜。这是我国民间很古老的一个游戏,别看这游戏极其简单,却蕴含着深刻的数学原理。下面我们来分析一下要如何才能够取胜。(一)巴什博奕(Bash Game):只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个。最后取光者得胜转载 2013-05-20 21:28:42 · 703 阅读 · 0 评论 -
树状数组求第k大值
以POJ 2985为例,具体的写在程序里。思路都是基于二分的思想。下面是(LogN)^2的方法/* 题意:某人养了很多猫,他会把一些猫合并成一组,并且会询问第k大组有几只猫 算法:处理集合用并查集,动态更新第K值用树状数组,具体的看注释 2011-07-21 19:59*/#include #define MAXN 300000int a[MAXN转载 2013-07-30 09:51:28 · 4171 阅读 · 0 评论 -
彻底弄懂二维树状数组
当要频繁的对数组元素进行修改,同时又要频繁的查询数组内任一区间元素之和的时候,可以考虑使用树状数组. 通常对一维数组最直接的算法可以在O(1)时间内完成一次修改,但是需要O(n)时间来进行一次查询.而树状数组的修改和查询均可在O(log(n))的时间内完成. 一、回顾一维树状数组 假设一维数组为A[i](i=1,2,...n),则与它对应的树状数组C[i](i=1,2,.转载 2013-07-29 13:17:18 · 9581 阅读 · 3 评论 -
程序员编程艺术
地址:http://blog.csdn.net/v_JULY_v/article/category/784066/2原创 2013-09-17 10:31:02 · 641 阅读 · 0 评论 -
后缀数组资料
原文地址:http://hi.baidu.com/lewutian/item/2dccf95ff5f1500ae7c4a5a4单独把它列出来是因为这个东西真的很神奇~~~后缀数组经典思想:多串合并+二分答案+最优性--->可行性例 1 :最长公共前缀给定一个字符串,询问某两个后缀的最长公共前缀。 // 直接套用,ans=min( height[ i ] )+rmq转载 2013-10-04 12:31:02 · 606 阅读 · 0 评论 -
乐观锁与悲观锁
悲观锁【Pessimistic Locking】顾名思义就是采用一种悲观的态度来对待事务并发问题,我们认为系统中的并发更新会非常频繁,并且事务失败了以后重来的开销很大,这样以来,我们就需要采用真正意义上的锁来进行实现。悲观锁的基本思想就是每次一个事务读取某一条记录后,就会把这条记录锁住,这样其它的事务要想更新,必须等以前的事务提交或者回滚解除锁。 假如我们数据库事务的隔转载 2014-09-17 01:12:45 · 579 阅读 · 0 评论