自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

kalilili的专栏

岁月如歌

  • 博客(24)
  • 收藏
  • 关注

转载 lower_bound()和upper_bound()(有删改)

函数lower_bound()在first和last中的前闭后开区间进行二分查找,返回大于或等于val的第一个元素位置。如果所有元素都小于val,则返回last的位置举例如下:一个数组number序列为:4,10,11,30,69,70,96,100.设要插入数字3,9,111.pos为要插入的位置的下标则pos = lower_bound( number, n

2015-01-27 12:08:53 633

转载 ACM 组队经验谈

§序章——团队!ACM不是一个人的战斗§上篇——合理分工,演好自己的角色§下篇——队友齐心,其利断金§番外——深呼吸§尾声——信任与成功这个世界上大牛无处不在大牛的形成无非三种:  天赋异禀  勤奋过人 媳妇熬成婆大牛往往神功盖世,知道无数优化算法, coding像吃饭,切题如切菜。§但是大牛也需要

2015-01-25 22:11:11 1276

原创 Dijkstra[两种邻接表+优先队列优化]

Dijksta算法中,如果我们采用的是邻接矩阵来存的,第一点浪费的空间比较多,第二点我们知道算法的时间复杂度在O(n*n),这样的算法可以说并不是很好,所以我们考虑优化它首先我们可以优化存储结构,采用邻接表来存储,其次我们可以用优先队列来排序大小,其时间复杂度大大降低。需要注意的是pair是按照第一个元素的大小排序,如果相同才按照第二个,所以我们要把d[i]包装在第一个元素上。vect

2015-01-22 15:20:01 3485 1

原创 并查集的两个优化(秩优化+路径压缩)

路径压缩寻找祖先时采用递归,但是一旦元素一多起来,或退化成一条链,每次GetFather都将会使用O(n)的复杂度,这显然不是我们想要的。对此,我们必须要进行路径压缩,即我们找到最久远的祖先时“顺便”把它的子孙直接连接到它上面。这就是路径压缩了。使用路径压缩的代码如下,时间复杂度基本可以认为是常数的。路径压缩可以采用迭代和递归方式递归方式实现简单但是有些题目会爆栈的

2015-01-22 08:44:34 9487 5

原创 POJ-1416-Shredding Company(模拟+dfs)

Shredding CompanyTime Limit: 1000MS Memory Limit: 10000KTotal Submissions: 4397 Accepted: 2519DescriptionYou have just been put in charge of developing a new sh

2015-01-21 22:36:34 949

原创 POJ2251Dungeon Master(三维图)(BFS)

Dungeon MasterTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 17444 Accepted: 6790DescriptionYou are trapped in a 3D dungeon and need to find the quic

2015-01-21 21:37:57 861

原创 POJ 3126 Prime Path(BFS)

Prime PathTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 12060 Accepted: 6843DescriptionThe ministers of the cabinet were quite upset by the message

2015-01-21 21:27:13 602

原创 POJ3278Catch That Cow(线性模型)(BFS)

Catch That CowTime Limit: 2000MS Memory Limit: 65536KTotal Submissions: 49988 Accepted: 15679DescriptionFarmer John has been informed of the location of a fugit

2015-01-21 20:25:07 654

原创 POJCurling 2.0(冰壶游戏)(DFS)

Curling 2.0Time Limit: 1000MS Memory Limit: 65536KTotal Submissions: 12490 Accepted: 5265DescriptionOn Planet MM-21, after their Olympic games this year, curlin

2015-01-21 20:11:09 1609

原创 POJ2488A Knight's Journey(dfs+数学)

A Knight's JourneyTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 32422 Accepted: 11040DescriptionBackground The knight is getting bored of seeing t

2015-01-21 19:53:06 714

原创 最短路算法学习总结和感悟

总的来说有这些最短路算法:floyd,Dijkstra,Bellman,SPFAfloyd的思想极其精炼,基于动态规划思想,代码极其简单for(int k=1;k<=n;k++) for(int i=1;i<=n;i++) for(int j=1;j<=n;j++){ if(dis[i][j]>dis[i][k]+dis[k][j]) dis[i][j]=dis[i][k]

2015-01-21 16:11:34 1638

转载 一位ACMer过来人的心得

刻苦的训练我打算最后稍微提一下。主要说后者:什么是有效地训练?       我想说下我的理解。       很多ACMer入门的时候,都被告知:要多做题,做个500多道就变牛了。其实,这既不是充分条件、也不会是必要条件。       我觉得一般情况下,对于我们普通学校的大学生,各方面能力的差距不会太大,在这种情况下,训练和学习的方法尤为重要。       其实,500题

2015-01-21 15:55:56 517

原创 堆--神奇的优先队列

由于完全二叉树父亲与儿子之间的规律可以只用一个数组就可以储存一棵完全二叉树堆的一些基本操作(以最小堆为例)1.添加元素将新元素插入到末尾,再向上调整直到满足堆的特性为止。如果堆的大小为N,那么插入一个新元素所需要的时间是O(logN)(以最小堆为例)向插入+上调整代码如下:void heap_insert(int num){ h[++n]=num; siftu

2015-01-17 11:38:59 580

原创 图的邻接表

邻接矩阵和邻接表区别:对于n个顶点,m条边,对于n阶有向完全图最大的m=2*( n-1+(n-2)+(n-3)+...+2+1 )= O(n^2) ,当边数远小于n^2的稀疏图来说用邻接表储存图的空间时间复杂度是O(M),而邻接矩阵储存是O(N^2).邻接表的两种实现方式: 1.用数组实现:int u[ ],v[ ],w[ ];    //分别储存u点,v点,和边权值。int

2015-01-14 22:40:01 1169

原创 HDUOJ 1874(最短路dijkstra)

畅通工程续Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 30515    Accepted Submission(s): 11137Problem Description某省自从实行了很多年的畅通工程计划后,终于修

2015-01-13 22:40:48 681

转载 弱校ACM奋斗史【转载】

这是一篇老文章,不过由于无法找到最初的发文地址,这里就不能粘贴原文网址了。本站转载此文与ACMer们共勉。感谢acmerfight供稿。题解:还记得2年前的一个晚上,我和一个女孩一起写完了这篇文章。写完后,她哭了,我笑了。然后,她走了,我哭了。2年后,我又找到她,这次,我没有让她走掉,她成了我的新娘。     不知道什么时候,开始知道ACM;也不知道什么时候,开始喜欢上ACM。但是

2015-01-13 22:13:14 496

原创 Dijkstra算法(求单源最短路径)

问题描述 单源最短路径问题,即在图中求出给定顶点到其它任一顶点的最短路径。最短路径的最优子结构性质该性质描述为:如果P(i,j)={Vi....Vk..Vs...Vj}是从顶点i到j的最短路径,k和s是这条路径上的一个中间顶点,那么P(k,s)必定是从k到s的最短路径。下面证明该性质的正确性。性质证明:用反证法易证。Dijkstra算法实现ps:用连接矩阵i

2015-01-13 18:37:44 1114 1

原创 只有5行的floyd-warshall算法

for(int k=1;k<=n;k++) for(int i=1;i<=n;i++) for(int j=1;j<=n;j++){ if(dis[i][j]>dis[i][k]+dis[k][j]) dis[i][j]=dis[i][k]+dis[k][j]; }上面是核心代码。其实这个Floyd算法是自底向上的动态规划算法。Dk(i,

2015-01-13 16:02:02 725

原创 XTUOJ ABK(求出A和B的第K大公约数)

Accepted : 21 Submit : 171Time Limit : 1000 MS Memory Limit : 65536 KB 题目描述ABK是一个比A+B还要简单的题目,给出两个整数A,B,求出A和B的第K大公约数。输入第一行是一个整数N(N ≤ 10000),表示样例的个数。 以后每行一个样例,为3个整数A,B,K (1≤A

2015-01-12 12:56:24 1797 1

转载 C++ int与string的转化

int本身也要用一串字符表示,前后没有双引号,告诉编译器把它当作一个数解释。缺省情况下,是当成10进制(dec)来解释,如果想用8进制,16进制,怎么办?加上前缀,告诉编译器按照不同进制去解释。8进制(oct)---前缀加0,16进制(hex)---前缀加0x或者0X。string前后加上双引号,告诉编译器把它当成一串字符来解释。注意:对于字符,需要区分字符和字符表示的数值。比如:

2015-01-11 10:26:41 570

原创 Steinhaus-Johnson-Trotter 生成全排列算法

Steinhaus-Johnson-Trotter算法是一种基于最小变换的全排列生成算法,对于排列a[1...n],该算法通过将a[i],与a[i-1](或a[i+1])进行交换,生成下一个排列,直到所有排列生成完毕为止,这样,当前排列与其后继排列只是两个相邻位置的元素发生了调换。当然,为了防止重复生成某一个排列,算法并非随意调换某两个元素之间的位置,其生成全排列的具体规则如下。首先,以字

2015-01-10 00:43:44 3304

原创 关于数的一些算法

1.寻找一个数的所有质因数2.寻找一个数n的所有约数3.寻找a,b两个整数的所有公约数等...

2015-01-05 16:20:04 1038 3

原创 计算组合数

1.防溢出:如果直接用c(n,m)=n!/(n-m)!*m!   来编程很可能会在算n!时就爆了long long,所以每一步最好把除分母也算上。所以对于c(n,m)来说取m=min(m,n-m)来算c(n,m)=n*(n-1)*(n-2)*...*(n-m+1)/m*(m-1)*(m-2)*...*1 。显然分子分母都是m项相乘,从后往前去算:先算(n-m+1)/1 ,then *

2015-01-05 12:08:54 645

原创 c++ list容器

list容器就是一个双向链表,可以高效地进行插入删除元素。构造函数    list c0; //空链表  list c1(3); //建一个含三个默认值是0的元素的链表  list c2(5,2); //建一个含五个元素的链表,值都是2  list c4(c2); //建一个c2的copy链表  list c5(c1.begin(),c1.end

2015-01-02 22:07:26 562

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除