- 博客(11)
- 收藏
- 关注
原创 【图论06】最小生成树 1002 畅通工程
算法思路:并查集。 其实这一题没有用到最小生成树,因为求连通分支的个数只要用到并查集,而最终的结果就是:count - 1。 当然老规矩count为0的时候需要单独讨论。 //模板开始 #include #include #include #include #include #include #include #include
2013-06-29 12:52:04 727
原创 【图论06】最小生成树 1001 Constructing Roads
算法思路:Kruskal + 并查集。 //模板开始 #include #include #include #include #include #include #include #include #include #include #include #include #include #inclu
2013-06-29 11:01:43 595
原创 【图论05】并查集 1005 More is better
开始用普通的并查集,一直TLE,后来看到大牛的代码,领悟到可以在findset函数被执行的过程中进一步压缩路径,这样的话下次如果执行findset时同样的路径会快很多,因为上次走同样路劲的时候已经把“长链”拉直了。 还有大牛说需要离散化,能够达到优化,这里没有采用。 //模板开始 #include #include #include #include #
2013-06-28 20:40:22 558
转载 POJ 并查集 题目汇总 ——czyuan原创
继续数据结构的复习,本次的专题是:并查集。 并查集,顾名思义,干的就是“并”和“查”两件事。很多与集合相关的操作都可以用并查集高效的解决。 两个操作代码: int Find(int x) { if (tree[x].parent != x) { tree[x].p
2013-06-28 20:00:49 621
原创 【图论05】并查集 1003 Is It A Tree?
算法思路:并查集,判断连通并且无环,只有一个0入度顶点。 无环条件:边数 + 1 = 顶点数。 连通条件:只有1个或者0个(回路)顶点满足 next_node[j] == j && flag[j] != 0。 //模板开始 #include #include #include #include #include #include #
2013-06-28 13:06:21 725
原创 【图论05】并查集 1002 小希的迷宫
算法思路;1.经典的并查集;2.连通且不存在回路条件:边数 + 1 = 顶点数 注意陷阱(测试数据本身设计不太合理): 0 0 Yes 1 1 0 0 Yes //模板开始 #include #include #include #include #include #include #include #incl
2013-06-28 12:10:17 598
原创 【图论07】线段树 1001 敌兵布阵
第一次提交的时候TLE,最后改成C输入输出成功AC,耗时156ms。 通过尝试用不同格式的代码提交之后,发现一个问题,性能影响:输出 > 输入 > 字符串比较(这里更多的是char* 和 string的性能差异)。所以在细节上进行性能优化的时候,应该优先考虑输出、输入。 算法思路:考察树状数组,区间信息的维护和查询方法。 //模板开始 #include #include
2013-06-26 12:11:16 560
原创 【练习04】 字典树 1006 统计难题
这一题数组要开到百万级,如1000005,不然会RE。 解题思路:字典树,为了最后统计出前缀被包含的次数,需要在构造trie的时候增加一个数组记录经过每个节点的路径数。 //模板开始 #include #include #include #include #include #include #include #include
2013-06-25 19:11:10 513
原创 【图论05】并查集 1001 Play on Words
题意:将n个单词首尾相连组成一个单词链,如:acm->malform->mouse(a -> m -> m -> m ->m -> e) 并查集+欧拉路实现 1.并查集判连通,这点不用多说 2.欧拉路,由图中可知除二端点外,其余字母的入度和出度均相等,二端点的出度和入度相差1,还有一种可能是,整个图就是一个欧拉回路,此时每个端点的入度和出度均相等
2013-06-24 20:52:00 564
原创 【练习03】 KMP 1006 Count the string
如果枚举所有前缀并且调用find函数会超时,但是我们思考一下就能发现只要遍历数组f,当f的值非0,count就加1(包括f[n]),最后加上字符串长度n就是最终的结果。(仔细理解) 最后还要注意的是题目要求输出mod 10007. //模板开始 #include #include #include #include #include #include
2013-06-21 21:00:31 628
原创 【练习03】 KMP 1004 Period
kmp,依次求字符串前缀的最小循环节, AC耗时500ms,但是在statistic里看到有人50msAC, 可能原因: 1.输入输出的优化 2.用了更神奇的算法。 //模板开始 #include #include #include #include #include #include #include #include #i
2013-06-21 16:28:53 515
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人