摘要:
#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;#define LL long long#define pii pair#define bug coutr) return ; int m=(r+l)>>1; newNode(x,m); makeTree(ch[... 阅读全文
摘要:
题目地址:http://poj.org/problem?id=2513题意就是给我们n个带颜色的木棍,看是否能排成一排(相接的颜色必须是一样的),解题思路是看的别人的:判断无向图中是否存在欧拉通路,判断条件是:1、有且只有两个度为奇数的节点2、图是连通的由于节点是字符串,因此我们可以利用字典树将其转换成一个颜色序号。这样,统计每种颜色的出现次数就可以了。判断图是否连通,可以利用并查集:若最后所有节点在同一个集合,则图是连通的。#include#include#include#define maxn 501000int father[maxn],degree[maxn];struct node{ 阅读全文
摘要:
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1247本题为简单字典树问题。解题思路:进行插入的时候,使用flg标记每个单词的结尾,当flg为true时表示到了某一个单词的结尾当为false时即不是某一个单词的结尾。进行查找的时候当一个单词的前一部分是某个单词的时候则判断后面一部分是否也是一个已经存在的单词,是则返回true否则返回false。#include#include#includechar list[50001][26];struct node{ bool flg; node *next[26];}*root;void insert(c 阅读全文
摘要:
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1251字典树模版题动态实现:#include#include#include#define maxn 26struct node{ int count; node *next[maxn];}*root;void insert(char str[]){ int i,len = strlen(str); node *current,*newset; current = root; for(i = 0; i next[k] != NULL) { current = current->next[k]; 阅读全文