摘要: 高消一直是ACM中高层次经常用到的算法,虽然线性代数已经学过,但高消求解的问题模型及高消模板的应用变化是高消的最复杂之处。先介绍一下高消的基本原理:引入互联网czyuan的帖子:高斯消元法,是线性代数中的一个算法,可用来求解线性方程组,并可以求出矩阵的秩,以及求出可逆方阵的逆矩阵。高斯消元法的原理是:若用初等行变换将增广矩阵化为,则AX=B与CX=D是同解方程组。所以我们可以用初等行变换把增广矩阵转换为行阶梯阵,然后回代求出方程的解。以上是线性代数课的回顾,下面来说说高斯消元法在编程中的应用。首先,先介绍程序中高斯消元法的步骤:(我们设方程组中方程的个数为equ,变元的个数为var,注意:一般 阅读全文
posted @ 2012-09-20 11:17 兴安黑熊 阅读(499) 评论(0) 推荐(0) 编辑
摘要: Color the ballTime Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 4460 Accepted Submission(s): 2392 Problem DescriptionN个气球排成一排,从左到右依次编号为1,2,3....N.每次给定2个整数a b(a <= b),lele便为骑上他的“小飞鸽"牌电动车从气球a开始到气球b依次给每个气球涂一次颜色。但是N次以后lele已经忘记了第I个气球已经涂过几次颜色了,你能 阅读全文
posted @ 2012-09-19 21:22 兴安黑熊 阅读(117) 评论(0) 推荐(0) 编辑
摘要: How Many Fibs?Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 2282 Accepted Submission(s): 926 Problem DescriptionRecall the definition of the Fibonacci numbers: f1 := 1 f2 := 2 fn := fn-1 + fn-2 (n >= 3) Given two numbers a and b, calculate h 阅读全文
posted @ 2012-09-19 21:05 兴安黑熊 阅读(189) 评论(0) 推荐(1) 编辑
摘要: 树状树组-----转载树状数组是对一个数组改变某个元素和求和比较实用的数据结构。两中操作都是O(logn)。 在解题过程中,我们有时需要维护一个数组的前缀和S[i]=A[1]+A[2]+...+A[i]。 但是不难发现,如果我们修改了任意一个A[i],S[i]、S[i+1]...S[n]都会发生变化。 可以说,每次修改A[i]后,调整前缀和S[]在最坏情况下会需要O(n)的时间。 当n非常大时,程序会运行得非常缓慢。 因此,这里我们引入“树状数组”,它的修改与求和都是O(logn)的,效率非常高。【理论】 为了对树状数组有个形 象的认识,我们先看下面这张图。如图所示,红色矩形表示的数组C[]就 阅读全文
posted @ 2012-09-18 22:18 兴安黑熊 阅读(250) 评论(0) 推荐(0) 编辑
摘要: •//拓扑排序,邻接阵形式,复杂度O(n^2)•//如果无法完成排序,返回0,否则返回1,ret返回有序点列•//传入图的大小n和邻接阵mat,不相邻点边权0•#define MAXN 100•int toposort(int n,int mat[][MAXN],int* ret){• int d[MAXN],i,j,k;• for (i=0;i<n;i++)• for (d[i]=j=0;j<n;d[i]+=mat[j++][i]);• for (k=0;k<n;ret[k++]=i){• for (i=0;d[i]&&i<n;i++);• if (i 阅读全文
posted @ 2012-09-18 22:12 兴安黑熊 阅读(155) 评论(3) 推荐(0) 编辑