摘要: http://poj.org/problem?id=1182关于并查集 很好的一道题,开始也看了一直没懂。这次是因为《挑战程序设计竞赛》书上有讲解看了几遍终于懂了。是一种很好的思路,跟网上其他的不太一样。因为N和K很大,所以必须高效维护动物之间的关系,并快速判断是否产生了矛盾,并查集是维护 "属于同... 阅读全文
posted @ 2015-05-06 17:03 NowAndForever 阅读(164) 评论(0) 推荐(0) 编辑
摘要: 并查集的特点:1.可以高效查询元素 a 和元素b是否属于同一组2.合并元素a和元素b所在的组 (无法分割)初始化:n个节点来表示元素,最开始没有边。合并:从一个组的跟向另一个组连边,这样两棵树就变成了一棵树,也就把两个组合并为一个组了。查询:为了查询两个节点是否属于同一个组,我们需要沿着树往上走,来... 阅读全文
posted @ 2015-05-06 11:17 NowAndForever 阅读(164) 评论(0) 推荐(0) 编辑
摘要: 书上实现:二叉搜索数的特点:高效实现 插入一个数值,查询是否包含某个数值,删除某一个数值。所有的节点都满足左子树上的所有节点都比自己的小,而右子树上的所有节点都比自己大的特点。查询:如果当前数值等于根节点返回true,比根节点小,就往左儿子走,否则往右儿子走。插入:按照查找数值的方法去找其所在位置,... 阅读全文
posted @ 2015-05-06 10:48 NowAndForever 阅读(1514) 评论(0) 推荐(0) 编辑
摘要: http://poj.org/problem?id=2431你需要驾驶一辆卡车做一次长途旅行,但是卡车每走一单位就会消耗掉一单位的油,如果没有油就走不了,为了修复卡车,卡车需要被开到距离最近的城镇,在当前位置和城镇之间有n个加油站可以加油。为了减少危险,需要最少的加油次数,卡车的油箱可以看作无限大,... 阅读全文
posted @ 2015-05-05 19:40 NowAndForever 阅读(402) 评论(0) 推荐(0) 编辑
摘要: 基本思想: 两种操作都跟树的深度成正比,所以复杂度 O(log(n)) ;push():在向堆中插入数值时,首先在堆的末尾插入该数值,然后不断向上提直到没有大小颠倒为止。pop(): 从堆中取出一个数值时,首先把堆的最后一个节点的数值复制到根节点上,并且删除最后一个节点,然后不断向下交换直到没有大小... 阅读全文
posted @ 2015-05-05 14:26 NowAndForever 阅读(460) 评论(0) 推荐(0) 编辑
摘要: http://202.197.224.59/OnlineJudge2/index.php/Problem/read/id/1231直接递推。在保存最大值的时候同时保存有多少条到达最大值的路径,注意第一行第一列的情况即可。别忘了 取模。 1 #include 2 #include 3 #inclu... 阅读全文
posted @ 2015-05-02 13:40 NowAndForever 阅读(160) 评论(0) 推荐(0) 编辑
摘要: http://www.51nod.com/onlineJudge/questionCode.html#problemId=1050&noticeId=13385参考:http://blog.csdn.net/acdreamers/article/details/38760805#include#in... 阅读全文
posted @ 2015-04-22 22:07 NowAndForever 阅读(250) 评论(0) 推荐(0) 编辑
摘要: http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1049令 dp[i]表示为以a[i]结尾的最大子段和,则 dp[i]=max(dp[i-1]+a[i],a[i]);包含a[i-1] : dp[i]=dp[i-1]+a[i]... 阅读全文
posted @ 2015-04-22 20:40 NowAndForever 阅读(277) 评论(0) 推荐(0) 编辑
摘要: http://poj.org/problem?id=1065题意比较简单,有n跟木棍,事先知道每根木棍的长度和宽度,这些木棍需要送去加工,第一根木棍需要一分钟的生产时间,如果当前木棍的长度跟宽度都大于前一根木棍,那么这根木棍不需要生产时间,问你最少的生产时间是多少?首先可以贪心,先按长度 l排序,如... 阅读全文
posted @ 2015-04-22 19:46 NowAndForever 阅读(209) 评论(0) 推荐(0) 编辑
摘要: http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1092这个题是poj-3280的简化版,这里只可以增加字符,设 dp[i][j] 为把以i开头j结尾的子串变为回文串的最少次数,if(s[i]==s[j]) dp[i][j]... 阅读全文
posted @ 2015-04-22 16:30 NowAndForever 阅读(365) 评论(0) 推荐(0) 编辑