摘要: 这题目真的彻底无语了,因为一个小错误,检查了半天,就是一个累加变量被我重复用了悲剧呀,怪不得老是输出一些莫名其妙的东西整体的话,这应该也算是基础的字典树吧,,就是读入数据有些技巧,嘿嘿,不过好像可以用map做哦前面做过一道题,就是在一个串的末尾的节点处,标记一下,而这道题,在一个串的末尾处将该串对应 的英文插入#include<string.h>#include<stdio.h>#include<stdlib.h>typedef struct node{ node* next[26]; char str[10];}*tree,t;tree root;char 阅读全文
posted @ 2011-05-12 22:05 枕边梦 阅读(252) 评论(0) 推荐(1) 编辑
摘要: 这道题,呵呵,题目那么长,说到底,是要计算一个数出现重复出现最多的次数题目说,一连串不重复的数,只需要一个所以同一个数重复一次就需要多一个呵呵,用map轻松解决了#include <iostream>#include <map>using namespace std; int n; int main(){ while (scanf("%d", &n) != EOF) { map<int, int> m; map<int, int>::iterator it; int i, a; for (i=0; i<n; i+ 阅读全文
posted @ 2011-05-12 20:26 枕边梦 阅读(226) 评论(0) 推荐(0) 编辑
摘要: 呵呵,这道题目的话,也不难吧,就是在节点中添加了俩个标志因为想要一边添加一边判断是否出现过某个串是某个串的前缀,所以需要添加这俩个标志一个是v,用来表示是否有一个串在该节点结束,这主要是针对前面的串中出现过当前串的前缀;另一个是f,用来标志当前当一个串结束时,它是否存在下一个节点,主要针对当前串是之前出现过的串的前缀添加这俩个标志之后,基本没什么问题了,对了,初始化还是很严重的问题,额,因为有一个地方忘记初始化了,结果wa了一次额,还有一个蛮严重的,就是每一个case之后,要释放空间,不然内存使用过大了,虽然大牛说过,但我还是固执的提交了一次,悲剧#include<stdio.h> 阅读全文
posted @ 2011-05-12 19:58 枕边梦 阅读(1182) 评论(0) 推荐(0) 编辑
摘要: 并查集告一段落啦,先放下吧,今晚再做一下总结吧之后转入字典树的学习这道题目是比较基础的而且明显的字典树慢慢来吧题意比较明显,查找以某一个串为前缀的单词的数目,字典树还有一个名称,就是前缀树,所以就很明显了吧不过下面的代码用的是比较朴素的方法,root->next[],开的内存太大了,不过速度也相对快了root->cnt记录的是以从根节点到达该节点组成的串为前缀的单词的个数此题涉及到字典树的俩个基本操作,插入还有查找,代码很容易理解#include<stdio.h>#include<string.h>#include<stdlib.h>typede 阅读全文
posted @ 2011-05-12 14:12 枕边梦 阅读(950) 评论(3) 推荐(0) 编辑
摘要: 这题的话,跟食物链很相识,也是有三类,所以那个公式的话,还是一样的题意是要找出里面唯一的一个judge,judge的特别就是他没有固定属于哪一类,所以只能枚举每一个人当judge的情况了满足是唯一的judge的条件:1)当然就是枚举完所有人,只有一个的时候,那就是唯一的了;2)当此人是judge时,所有语句都成立,即不发生冲突在这里题目还要出输出,在第几行判断该人是judge的,这个也蛮好理解的,此人之前的所有人作为judge时出现矛盾的行数的最大值就是就是我们判断的依据,其实也可以这样想,判断当前面所以人不能成为judge的行数的最大,就是我们判断此人为judge的行数当不止一个人可以成为j 阅读全文
posted @ 2011-05-12 12:23 枕边梦 阅读(194) 评论(0) 推荐(0) 编辑