ACM
IQ火箭炮
南中国一般大学普通工科IT学术起步幽默乐观男一枚
展开
-
ACM zoj 3533(伸展树实现)
这道zoj的题目需要我们根据指令优先级的大小来取指令和执行指令。因此我们可以用伸展树来提高插入和删除的效率,当这些操作进行的次数较大时,伸展树的结构将趋于合理,因而我们的效率也会显著地提高。#include #include using namespace std;struct Node{ Node* lc,*rc,*par; int id,weight,prio; //weig原创 2012-11-11 16:46:02 · 1031 阅读 · 0 评论 -
ACM zoj 1955(四分树实现)
这是道方阵颜色分割的题目,因而可以用四分树来解决。其实这道题对我来说,难点在于将要分割的颜色提取出来,因为当你遇到Q时说明你要将后面的颜色分成四块,如果在这之中又出现Q的话,那你就要用同样的方法将Q后面的颜色进行分割。刚开始可能急于求成,没有一步步耐心地找出规律,直到最后静下心来,从中总结出规律,才将这段算法写出来。#include #include #include #incl原创 2012-11-27 15:31:03 · 3127 阅读 · 0 评论 -
ACM zoj 1217(自定义散列函数实现)
这道题也可以用map来实现,我这里用的是自定义散列函数。因为map是一种普通的实现方式,即是一种通用的实现方式,而对于一个具体的问题,如果你可以用针对这道题的行之有效的方法来解决的话,效率有可能就会高起来。#include#include#includeusing namespace std;#define max 190000 string M[2][max];queu原创 2012-11-18 11:26:55 · 1147 阅读 · 0 评论 -
ACM zoj 2724(堆实现 发现段错误)
之前做ACM题目时偶尔会出现段错误。段错误,之前也讲过,主要是内存的越界访问;但今天遇到的段错误的原因有些特殊,就是C++中的string类型也会引起段错误!!先看源代码:#include #include #include #include using namespace std;struct Heap{ string msg; //char msg[10]; 这里是根原创 2012-11-18 10:36:13 · 1150 阅读 · 0 评论 -
zoj 1203求最小生成树的权值之和(kruskal算法实现)
这道zoj的题目,主要运用的是求最小生成树的知识,我用的是kruskal算法,当然,用取权值最小边的最小堆和查看是否有回路的并查集是自己实现的。但提交了几次都没成功,查了下,原来是自己的输出格式没有正确。看来以后要特别注意这方面的问题。#include #include #include #include #include using namespace std;/*****原创 2012-12-07 18:49:41 · 5583 阅读 · 0 评论 -
ACM zoj 1789(并查集实现)
转载本博客上原创文章者,请注明出处。这是道并查集的题目,刚开始我是用一个类来实现的。但很意外的是总是出现段错误(主要是指针乱指或者数组越界,但我发现不了这道题的问题),本来刚开始类的指针数据成员parent是指向动态申请的内存的,不行后改为一般的数组还是不行,最后还是将其改为非类来实现,结果AC了。(因此可能是ACM中最好不要用类实现的问题吧。)程序如下:#includ原创 2012-10-31 22:43:46 · 1750 阅读 · 0 评论