http://acm.hust.edu.cn/vjudge/problem/28438

题意:给定n个字符串,问用strcmp函数比较这些字符串共用多少次比较。

题解:

插入一个‘#’作为字符串的结束符,避免特殊判断太乱。
插入的时候,如果走过以前插入的字符,那就把比较的次数加上。
要用long long。

 //uva11732
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
using namespace std; typedef long long LL;
const LL N=,L=;
char s[L];
LL n,num,ans;
struct node{
LL d,son,right,sum,len;
}a[N*L]; void clear(LL x)
{
a[x].d=a[x].sum=a[x].len=;
a[x].son=a[x].right=-;
} void insert(char *s,LL l)
{
LL x=;
for(LL i=;i<l;i++)
{
bool found=;
LL now=,next;
if(s[i]!='#') now=s[i]-'a'+;
for(LL y=a[x].son;y!=-;y=a[y].right)
{
if(a[y].d==now)
{
found=;
ans+=*a[y].sum;
next=y;
}
else ans+=a[y].sum;
}
if(!found)
{
num++;
clear(num);
a[num].d=now;
a[num].len=i+;
if(a[x].son==-) a[x].son=num;
else
{
LL t=a[x].son;
while(a[t].right!=-)
t=a[t].right;
a[t].right=num;
} next=num;
}
x=next;
a[x].sum++;
}
} int main()
{
freopen("a.in","r",stdin);
freopen("a.out","w",stdout);
LL T=;
while()
{
scanf("%lld",&n);getchar();
if(!n) return ;
num=;ans=;clear();
for(LL i=;i<=n;i++)
{
scanf("%s",s);
LL l=strlen(s);
s[l]='#';l++;
insert(s,l);
}
printf("Case %lld: %lld\n",++T,ans);
} return ;
}
/*
A!=B 1
A==B 2
*/

【uva11732-"strcmp()" Anyone?】Trie的更多相关文章

  1. UVa11732 "strcmp()" Anyone?(Trie树+孩子兄弟表示法)

    我的做法是先建字典树,统计每个结点出现次数和相同字符串个数,每个结点对答案的贡献就是2*C(次数,2),然后再分别讨论相同字符串和不同字符串对答案的贡献. 另外这题主要就是Trie树的孩子兄弟表示法: ...

  2. 【LA3942-Remember the word 】Trie

    http://acm.hust.edu.cn/vjudge/problem/22109 题意:给定n个单词,一个字符串,问把这个字符串划分为若干个单词的连接(单词可重复使用)有多少种方案(mod200 ...

  3. 【状压dp】Trie 树 @中山纪念中学20170304

    目录 Trie 树 PROBLEM 题目描述 输入 输出 样例输入 样例输出 SOLUTION CODE Trie 树 PROBLEM 题目描述 字母(Trie)树是一个表示一个字符串集合中所有字符串 ...

  4. 【hdu1251-统计难题】Trie

    http://acm.hust.edu.cn/vjudge/problem/16379 题意:给定多个单词,多次询问符合某前缀的单词有多少个. 题解:tire.数组开了5*10^6才A,不然就RE. ...

  5. 【数据结构与算法】Trie(前缀树)模板和例题

    Trie 树的模板 Trie 树的简介 Trie树,又称字典树,单词查找树或者前缀树,是一种用于快速检索的多叉树结构,如英文字母的字典树是一个26叉树,数字的字典树是一个10叉树.他的核心思想是空间换 ...

  6. bzoj 2741: 【FOTILE模拟赛】L 分塊+可持久化trie

    2741: [FOTILE模拟赛]L Time Limit: 15 Sec  Memory Limit: 162 MBSubmit: 1116  Solved: 292[Submit][Status] ...

  7. 【BZOJ2741】【FOTILE模拟赛】L 分块+可持久化Trie树

    [BZOJ2741][FOTILE模拟赛]L Description FOTILE得到了一个长为N的序列A,为了拯救地球,他希望知道某些区间内的最大的连续XOR和. 即对于一个询问,你需要求出max( ...

  8. 【Wannafly挑战赛29F】最后之作(Trie树,动态规划,斜率优化)

    [Wannafly挑战赛29F]最后之作(Trie树,动态规划,斜率优化) 题面 牛客 题解 首先考虑怎么计算\([l,r]\)这个子串的不同的串的个数. 如果\(l=1\),我们构建\(Trie\) ...

  9. 【hiho一下 第四周】Trie图

    [题目链接]:http://hihocoder.com/problemset/problem/1036?sid=1092555 [题意] [题解] AC自动机的模板题; 在求有没有子串的时候; 注意要 ...

  10. 【hiho一下第二周 】Trie树

    [题目链接]:http://hihocoder.com/problemset/problem/1014 [题意] [题解] 在字典树的域里面加一个信息cnt; 表示这个节点下面,记录有多少个单词; 在 ...

随机推荐

  1. 网站的robots.txt文件

    什么是robots.txt? robots.txt是一个纯文本文件,是爬虫抓取网站的时候要查看的第一个文件,一般位于网站的根目录下.robots.txt文件定义了爬虫在爬取该网站时存在的限制,哪些部分 ...

  2. 【面试题】2018年最全Java面试通关秘籍第五套!

    [面试题]2018年最全Java面试通关秘籍第五套! 原创 2018-04-26 徐刘根 Java后端技术 第一套:<2018年最全Java面试通关秘籍第一套!> 第二套:<2018 ...

  3. Anytime项目开发记录3

    应用想要做的好,反馈必然少不了~哈哈~ 用户的反馈.意见.建议,甚至是谩骂,都是对项目的反馈. 如果一个应用没有听取用户的反馈,那么应用会离着用户越来越远.懂得用户要什么是一回事,听得到用户的反馈,则 ...

  4. 做模态弹框的时候,防止背景滚动方法 移动端 html5

    $(window.document).bind("touchmove", function() { return false; });

  5. Ubuntu 安装Google浏览器

    Ubuntu自带的浏览器是火狐浏览器,使用的时候多多少少有些不方便,这里安装Googel浏览器. 下载 可以到 Ubuntu chrome去下载安装包. 安装 首先到下载的根目录 cd ~/Downl ...

  6. spring boot 过滤器实现接收 压缩数据 并解压

    1.新加类GzipRequestWrapper 继承HttpServletRequestWrapper类 public class GzipRequestWrapper extends HttpSer ...

  7. kill命令详解

    基础命令学习目录首页 原文链接:https://www.cnblogs.com/wangcp-2014/p/5146343.html 1.命令格式: kill[参数][进程号] 2.命令功能: 发送指 ...

  8. I/O流任务

    一.完成以下链接[https://www.cnblogs.com/zhrb/p/6834084.html]中的任务3.4.5. 3. 字符编码 主要讲解中文乱码问题,FileReader.InputS ...

  9. neutron DVR

    DVR 简介 DVR 提出的背景 在 Neutron 的网络环境中,跨子网的虚机通信是需要通过 Neutron 的路由器.这既包括不同子网的虚拟机之间的通信,又包括虚拟机与外网之间的通信.在 DVR ...

  10. linux tcpdump抓包,wireshark实时解析

    转自: http://www.freebuf.com/articles/wireless/6517.html   由于CentOS7上yum安装的wireshark对CoAP的解析支持不太完善,而我w ...