UVA12506 字典树简单应用
来源:互联网 发布:深圳八爪网络 编辑:程序博客网 时间:2024/05/17 09:15
分析:构造字典树+深搜
采用刘汝佳的左儿子右兄弟的构树方式,节省了大量的空间。
代码如下:
#include <cstdio>#include <cmath>#include <cstring>using namespace std;typedef long long ll;const int maxn = 1e6+10;int head[maxn];int Next[maxn];int tot[maxn];char ch[maxn],word[maxn];int sz;int n;ll ans;void Clear(){ sz = 1; tot[0] = head[0] = Next[0] = 0;}void Insert(const char *s){ int u = 0, len = strlen(s), v; bool found; tot[0]++; for (int i=0; i<len; i++) { found = 0; for (v = head[u]; v!=0; v=Next[v]){ if (ch[v]==s[i]) { found = 1; break; } } if (!found){ v = sz++; tot[v] = 0; ch[v] = s[i]; Next[v] = head[u]; head[u] = v; head[v] = 0; } u = v; tot[u]++; }}void init(){ Clear(); scanf("%d",&n); for (int i=1; i<=n; i++) { scanf("%s",word); Insert(word); } ans = 0;}void dfs(int depth, int u){ if (tot[u]==1) {ans += depth; return;} for (int v=head[u]; v!=0; v=Next[v]) dfs(depth+1,v);}int T;int main(){ scanf("%d",&T); while(T--){ init(); dfs(0,0); printf("%lld\n",ans); } return 0;}
阅读全文
0 0
- UVA12506 字典树简单应用
- 字典树简单应用
- 字典树的简单应用 NYoj 290
- hdu 1251 字典树的简单应用
- hdu-1247 简单map的应用。(字典树)
- HDU 1247 Hat’s Words(字典树简单应用)
- hdu-1251统计难题-字典树的简单应用
- 字典树的应用
- 字典树及其应用
- 字典树应用
- 字典树应用
- 字典树的应用
- 字典树应用
- 字典树简单示例
- 简单字典树
- 字典树简单实现
- 简单字典树Trie
- HDU2846 简单字典树
- JAVA模拟学生选课系统
- JAVA语言程序设计(基础篇)第三章->∞
- 捕捉全局异常
- 第一次部署项目——是魔法吧
- opencv像素基本操作及图像遍历at
- UVA12506 字典树简单应用
- 多用户留言系统0.3-执行耗时
- hive学习笔记-架构分析
- ls -l 第一个字符详解
- Xshell脚本——0开始
- spring文件上传
- 时间轮
- spi调试
- 共轭函数