日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

[POJ3630] Phone List

發(fā)布時(shí)間:2025/4/9 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [POJ3630] Phone List 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

傳送門(mén) - > \(POJ3630\)

題目描述

給定一個(gè)電話號(hào)碼列表,確定它是否一致,因?yàn)闆](méi)有號(hào)碼是另一個(gè)號(hào)碼的前綴。假設(shè)電話目錄列出了這些號(hào)碼:
Emergency 911
Alice 97 625 999
Bob 91 12 54 26
在這種情況下,不可能打電話給Bob,因?yàn)橐坏┠鷵芰薆ob電話號(hào)碼的前三位數(shù),中央就會(huì)將您的電話直接打到緊急線路。所以這個(gè)名單不一致。

輸入

第一行輸入給出一個(gè)整數(shù),1≤t≤40,測(cè)試用例數(shù)。每個(gè)測(cè)試用例從n個(gè)電話號(hào)碼開(kāi)始,在一個(gè)單獨(dú)的行上,1≤n≤10000。然后跟隨n行每條線上有一個(gè)唯一的電話號(hào)碼。電話號(hào)碼是一個(gè)最多十位數(shù)的序列。

輸出

對(duì)于每個(gè)測(cè)試用例,如果列表一致,輸出“是”,否則輸出“否”。

樣例輸入

2
3
911
97625999
91125426
5
113
12340
123440
12345
98346

樣例輸出

NO
YES

題解

trie樹(shù)裸題
在插入的時(shí)候標(biāo)記一下當(dāng)前單詞的結(jié)尾
在檢索的時(shí)候分兩種情況,設(shè)當(dāng)前字符串長(zhǎng)度為len,前l(fā)en-1位如果有標(biāo)記就代表有前綴,不合法
若第len位標(biāo)記數(shù)量大于等于2,則代表有重復(fù)字符串,不合法

#include<cstdio> #include<cstring> #include<cmath> #define Min(a,b) (a)<(b)?(a):(b) #define Max(a,b) (a)>(b)?(a):(b) #define in(i) (i=read()) using namespace std; int read() {int ans=0,f=1; char i=getchar();while(i<'0' || i>'9') {if(i=='-') f=-1; i=getchar();}while(i>='0' && i<='9') {ans=(ans<<1)+(ans<<3)+i-'0'; i=getchar();}return ans*f; } int T,tot,flag; int trie[1000010][10],ed[1000010]; char s[10010][20]; void insert(char *str) {int len=strlen(str),p=0;for(int i=0;i<len;i++) {int c=str[i]-'0';if(!trie[p][c]) trie[p][c]=++tot;p=trie[p][c];} ed[p]++; } void find(char *str) {if(!flag) return;int len=strlen(str),p=0;for(int i=0;i<len;i++) {int c=str[i]-'0';if(ed[p]) {flag=0;return;}p=trie[p][c];}if(ed[p]>=2) flag=0; } int main() {in(T);while(T--) {int n; in(n);tot=0; flag=1;memset(ed,0,sizeof(ed));memset(trie,0,sizeof(trie));for(int i=1;i<=n;i++) {scanf("%s",s[i]);insert(s[i]);}for(int i=1;i<=n;i++) find(s[i]);puts(flag?"YES":"NO");} }

博主蒟蒻,隨意轉(zhuǎn)載.但必須附上原文鏈接

http://www.cnblogs.com/real-l/

轉(zhuǎn)載于:https://www.cnblogs.com/real-l/p/9472724.html

總結(jié)

以上是生活随笔為你收集整理的[POJ3630] Phone List的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。