• 1729 单词查找树


    1729 单词查找树

     

    2000年NOI全国竞赛

     时间限制: 2 s
     空间限制: 128000 KB
     题目等级 : 大师 Master
     
     
     
    题目描述 Description

    在进行文法分析的时候,通常需要检测一个单词是否在我们的单词列表里。为了提高查找和定位的速度,通常都要画出与单词列表所对应的单词查找树,其特点如下:

    l  根节点不包含字母,除根节点外每一个节点都仅包含一个大写英文字母;

    l  从根节点到某一节点,路径上经过的字母依次连起来所构成的字母序列,称为该节点对应的单词。单词列表中的每个词,都是该单词查找树某个节点所对应的单词;

    l  在满足上述条件下,该单词查找树的节点数最少。

    对一个确定的单词列表,请统计对应的单词查找树的节点数(包括根节点)

    输入描述 Input Description

    该文件为一个单词列表,每一行仅包含一个单词和一个换行/回车符。每个单词仅由大写的英文字符组成,长度不超过63个字符。文件总长度不超过32K,至少有一行数据。

    输出描述 Output Description

    该文件中仅包含一个整数和一个换行/回车符。该整数为单词列表对应的单词查找树的节点数。

    样例输入 Sample Input

    A

    AN

    ASP

    AS

    ASC

    ASCII

    BAS

    BASIC

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<string>
     4 #include<cstring>
     5 #include<cmath>
     6 #include<algorithm>
     7 using namespace std;
     8 string a[7000];
     9 int main()
    10 {
    11     int n=0;
    12     while(cin>>a[++n]);
    13     n--;
    14     sort(a+1,a+n+1);
    15     int t=a[1].length();
    16     for(int i=2;i<=n;i++)
    17     {
    18           int j=0;
    19           while(a[i][j]==a[i-1][j]&&j<a[i-1].length())j++;
    20           t+=a[i].length()-j;
    21     }
    22       cout<<t+1;
    23 }
  • 相关阅读:
    当期所得税费用总额
    所得税净利润算法
    [AGC028B]Removing Blocks 概率与期望
    bzoj 4319: cerc2008 Suffix reconstruction 贪心
    bzoj 2430: [Poi2003]Chocolate 贪心
    BZOJ 2839: 集合计数 广义容斥
    luogu 5505 [JSOI2011]分特产 广义容斥
    CF504E Misha and LCP on Tree 后缀自动机+树链剖分+倍增
    CF798D Mike and distribution 贪心
    CF707D Persistent Bookcase 可持久化线段树
  • 原文地址:https://www.cnblogs.com/lyqlyq/p/6640608.html
Copyright © 2020-2023  润新知