题目:给你一组电话号码,推断是否有一些号码是其它的前缀(或相等)。

分析:字符串。字典树。利用字典树储存查询就可以,注意两种情况处理:

1.先短后长(前缀在前);2.先长后短(前缀在后)。

说明:第580题了,目标600╮(╯▽╰)╭。

#include <algorithm>
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <cstdio>
#include <cmath> using namespace std; #define nodesize 100001 //节点个数
#define dictsize 128 //字符集大小 //trie
typedef struct node1
{
int flag; //值域
node1* next[dictsize];
}tnode;
tnode dict[nodesize]; class Trie
{
private:
int size;
tnode* root;
public:
Trie() {initial();}
void initial() {
memset(dict, 0, sizeof(dict));
size = 0; root = newnode();
}
tnode* newnode() {return &dict[size ++];}
int insert(char* word) {
tnode* now = root;
for (int i = 0 ; word[i] ; ++ i) {
if (!now->next[word[i]])
now->next[word[i]] = newnode();
now = now->next[word[i]];
if (now->flag) return 1;
}now->flag = 1;
for (int i = 0 ; i < dictsize ; ++ i)
if (now->next[i])
return 1;
return 0;
}
}trie;
//trie end int main()
{
int t,n;
char buf[12];
while (~scanf("%d",&t))
while (t --) {
trie.initial();
scanf("%d",&n);
int flag = 0;
for (int i = 0 ; i < n ; ++ i) {
scanf("%s",buf);
if (trie.insert(buf))
flag = 1;
} if (flag)
printf("NO\n");
else printf("YES\n");
}
return 0;
}

UVa 11362 - Phone List的更多相关文章

  1. uva 1354 Mobile Computing ——yhx

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABGcAAANuCAYAAAC7f2QuAAAgAElEQVR4nOy9XUhjWbo3vu72RRgkF5

  2. UVA 10564 Paths through the Hourglass[DP 打印]

    UVA - 10564 Paths through the Hourglass 题意: 要求从第一层走到最下面一层,只能往左下或右下走 问有多少条路径之和刚好等于S? 如果有的话,输出字典序最小的路径 ...

  3. UVA 11404 Palindromic Subsequence[DP LCS 打印]

    UVA - 11404 Palindromic Subsequence 题意:一个字符串,删去0个或多个字符,输出字典序最小且最长的回文字符串 不要求路径区间DP都可以做 然而要字典序最小 倒过来求L ...

  4. UVA&&POJ离散概率与数学期望入门练习[4]

    POJ3869 Headshot 题意:给出左轮手枪的子弹序列,打了一枪没子弹,要使下一枪也没子弹概率最大应该rotate还是shoot 条件概率,|00|/(|00|+|01|)和|0|/n谁大的问 ...

  5. UVA计数方法练习[3]

    UVA - 11538 Chess Queen 题意:n*m放置两个互相攻击的后的方案数 分开讨论行 列 两条对角线 一个求和式 可以化简后计算 // // main.cpp // uva11538 ...

  6. UVA数学入门训练Round1[6]

    UVA - 11388 GCD LCM 题意:输入g和l,找到a和b,gcd(a,b)=g,lacm(a,b)=l,a<b且a最小 g不能整除l时无解,否则一定g,l最小 #include &l ...

  7. UVA - 1625 Color Length[序列DP 代价计算技巧]

    UVA - 1625 Color Length   白书 很明显f[i][j]表示第一个取到i第二个取到j的代价 问题在于代价的计算,并不知道每种颜色的开始和结束   和模拟赛那道环形DP很想,计算这 ...

  8. UVA - 10375 Choose and divide[唯一分解定理]

    UVA - 10375 Choose and divide Choose and divide Time Limit: 1000MS   Memory Limit: 65536K Total Subm ...

  9. UVA - 11584 Partitioning by Palindromes[序列DP]

    UVA - 11584 Partitioning by Palindromes We say a sequence of char- acters is a palindrome if it is t ...

随机推荐

  1. CAD创建组(网页版)

    主要用到函数说明: _DMxDrawX::CreateGroup 创建组.如果组名已经存在,就把实体加入组中.详细说明如下: 参数 说明 BSTR pszName 组名.,如果为空,创建匿名组 IDi ...

  2. Java基础(五)--内部类

    内部类简单来说就是把一个类的定义放到另一个类的定义内部 内部类分为:成员内部类.局部内部类.匿名内部类.静态内部类 成员内部类:最常见的内部类 public class Outter { privat ...

  3. JavaScipt30(第十个案例)(主要知识点:选中一个数组中间相连部分进行操作的一种思路)

    承接上文,第九个案例就不说了,是控制台的一些东西,一般用的很少,了解下就行了,想用的时候再翻api.这是第10个案例: 需要实现的效果是:点击一个checkbox,然后按下shift点击另一个chec ...

  4. JDBC配置MSSQL

    使用JDBC连接SQL SERVER 这可能是个很老套的话题,但不管怎么说还是有用的.姑且把配置方法贴出来吧.1. 确认Sql Server的的运行状态打开Sql Server配置管理器,确认Sql ...

  5. xmpp 消息和好友上下线(3)

    原始地址:XMPPFrameWork IOS 开发(四) 消息 //收到消息 - (void)xmppStream:(XMPPStream *)sender didReceiveMessage:(XM ...

  6. 洛谷——P3946 ことりのおやつ(小鸟的点心)

    P3946 ことりのおやつ(小鸟的点心) 题目太长,请去链接里看吧 注意细节:特判终点(即使困住又能怎样,到达就好了),特判高度 #include<bits/stdc++.h> #defi ...

  7. 随机数生成工具类(中文姓名,性别,Email,手机号,住址)

    public class RandomValueUtil { public static String base = "abcdefghijklmnopqrstuvwxyz012345678 ...

  8. Go:变量、常量、枚举

    一.变量 package main import "fmt" func variableZeroValue() { // 变量声明 var a int var b string f ...

  9. POJ -棋盘问题

    棋盘问题 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 60815   Accepted: 29135 Descriptio ...

  10. 【C++】实现记录软件计时时间

    利用getTickCount()和getTickFrequency()函数实现计时 double time0 = static_cast<double>(getTickCount()); ...