校内OJ 1128 词链(link)(Trie+DFS)
1128: 词链(link)
时间限制: 1 Sec  内存限制: 64 MB
	提交: 23  解决: 7
	[提交][状态][讨论版]
题目描述
给定一个仅包含小写字母的英文单词表,其中每个单词最多包含50个字母。
		如果一张由一个词或多个词组成的表中,每个单词(除了最后一个)都是排在它后面的单词的前缀,则称此表为一个词链。例如下面的单词组成了上个词链:
		i
		int
		integer
		而下面的单词不组成词链:
		integer
		intern
		请在给定的单词表中取出一些词,组成最长的词链。最长的词链就是包含单词数最多的词链。
		数据保证给定的单词表中,单词互不相同。
输入
第1行一个整数(n≤10000),表示单词表中单词数;
		接下来n行,每行一个单词。
输出
一个整数,表示最长词链长度。
样例输入
5
i
integer
internet
intern
int
样例输出
4
本以为用字典树会很麻烦,结果还是挺好写的
用Trie之后DFS一下就行了
代码:
#include <stdio.h>
#include <iostream>
#include <algorithm>
#include <cstdlib>
#include <sstream>
#include <cstring>
#include <bitset>
#include <string>
#include <deque>
#include <stack>
#include <cmath>
#include <queue>
#include <set>
#include <map>
using namespace std;
#define INF 0x3f3f3f3f
#define CLR(x,y) memset(x,y,sizeof(x))
#define LC(x) (x<<1)
#define RC(x) ((x<<1)+1)
#define MID(x,y) ((x+y)>>1)
typedef pair<int,int> pii;
typedef long long LL;
const double PI=acos(-1.0);
const int maxl=55;
const int maxn=26;
struct Trie
{
Trie *nxt[maxn];
int cnt;
Trie()
{
cnt=0;
for (int i=0; i<maxn; ++i)
nxt[i]=NULL;
}
};
Trie *L;
char s[maxl];
int ans;
void update(char s[])
{
int len=strlen(s);
int indx;
Trie *cur=L;
for (int i=0; i<len; ++i)
{
indx=s[i]-'a';
if(!cur->nxt[indx])
{
Trie *one=new Trie();
cur->nxt[indx]=one;
cur=one;
}
else
cur=cur->nxt[indx];
}
++(cur->cnt);
}
void dfs(Trie *now,int sum)
{
if(sum>ans)
ans=sum;
for (int i=0; i<maxn; ++i)
if(now->nxt[i]!=NULL)
dfs(now->nxt[i],sum+now->nxt[i]->cnt);
}
int main(void)
{
L=new Trie();
int n;
scanf("%d",&n);
while (n--)
{
scanf("%s",s);
update(s);
}
ans=0;
dfs(L,0);
printf("%d\n",ans);
return 0;
}
校内OJ 1128 词链(link)(Trie+DFS)的更多相关文章
- 词链(link)
		
词链(link) 题目描述 给定一个仅包含小写字母的英文单词表,其中每个单词最多包含50个字母.如果一张由一个词或多个词组成的表中,每个单词(除了最后一个)都是排在它后面的单词的前缀,则称此表为一个词 ...
 - cogs 173. 词链  字典树模板
		
173. 词链 ★★☆ 输入文件:link.in 输出文件:link.out 简单对比时间限制:1 s 内存限制:128 MB [问题描述]给定一个仅包含小写字母的英文单词表,其中每个 ...
 - 【bzoj3881】[Coci2015]Divljak  AC自动机+树链的并+DFS序+树状数组
		
题目描述 Alice有n个字符串S_1,S_2...S_n,Bob有一个字符串集合T,一开始集合是空的. 接下来会发生q个操作,操作有两种形式: “1 P”,Bob往自己的集合里添加了一个字符串P. ...
 - P1127 词链
		
P1127 词链 题目描述 如果单词X的末字母与单词Y的首字母相同,则X与Y可以相连成X.Y.(注意:X.Y之间是英文的句号“.”).例如,单词dog与单词gopher,则dog与gopher可以相连 ...
 - 开篇,UVA 755 && POJ 1002    487--3279    (Trie + DFS / sort)
		
博客第一篇写在11月1号,果然die die die die die alone~ 一道不太难的题,白书里被放到排序这一节,半年前用快排A过一次,但是现在做的时候发现可以用字典树加深搜,于是乐呵呵的开 ...
 - Codeforces Round #200 (Div. 1) D Water Tree 树链剖分 or dfs序
		
Water Tree 给出一棵树,有三种操作: 1 x:把以x为子树的节点全部置为1 2 x:把x以及他的所有祖先全部置为0 3 x:询问节点x的值 分析: 昨晚看完题,马上想到直接树链剖分,在记录时 ...
 - bzoj 3439 Kpm的MC密码(Trie+dfs序+主席树)
		
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=3439 [题意] 给定若干串,问一个串的作为其后缀的给定串集合中的第k小. [思路] 如 ...
 - RQNOJ 429 词链:单调栈
		
题目链接:https://www.rqnoj.cn/problem/429 题意: 如果一张由一个词或多个词组成的表中,每个单词(除了最后一个)都是排在它后面的单词的前缀,则称此表为一个词链. 如:i ...
 - luogu P6088 [JSOI2015]字符串树 可持久化trie 线段树合并 树链剖分 trie树
		
LINK:字符串树 先说比较简单的正解.由于我没有从最简单的考虑答案的角度思考 所以... 下次还需要把所有角度都考察到. 求x~y的答案 考虑 求x~根+y~根-2*lca~根的答案. 那么问题变成 ...
 
随机推荐
- Sass 中的 @ 规则
			
一. @import Sass 扩展了 CSS 的 @import 规则,让它能够引入 SCSS 和 Sass 文件. 所有引入的 SCSS 和 Sass 文件都会被合并并输出一个单一的 CSS 文件 ...
 - 越狱后想禁用Spotlight
			
如果你的是ios7越狱后不想用Spotlight搜索功能,大老板源的NoSpot ios7可轻松帮你实现.亲测可用……………………
 - 蓝牙4.0——Android BLE开发官方文档翻译
			
ble4.0开发整理资料_百度文库 http://wenku.baidu.com/link?url=ZYix8_obOT37JUQyFv-t9Y0Sv7SPCIfmc5QwjW-aifxA8WJ4iW ...
 - Python读写文件乱码问题
			
对开发者来说,最恼人的问题之一莫过于读写文件的时候,由于编码千差万别,出现乱码问题.好难快速解决啊... 最近我也遇到了这样的问题,经研究,把大致的解决思路拿出来共享. 1. python中习惯首先声 ...
 - vijos 1028 LIS *
			
链接:点我 #include<cstdio> #include<iostream> #include<algorithm> #include<cstring& ...
 - hdu 1542 扫描线求矩形面积的并
			
很久没做线段树了 求矩形面积的并分析:1.矩形比较多,坐标也很大,所以横坐标需要离散化(纵坐标不需要),熟悉离散化后这个步骤不难,所以这里不详细讲解了,不明白的还请百度2.重点:扫描线法:假想有一条扫 ...
 - Android项目环境搭建
			
安装步骤: ① 安装JDK1.6 在Windows上配置Java环境变量 # JAVA_HOME(C:\Program Files\Java\jdk1.6.0_06),Path(C:\Prog ...
 - Gym 100463D Evil DFS
			
Evil Time Limit: 5 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100463/attachments Descri ...
 - OD hit跟踪 run跟踪使用问题
			
刚学习OD不久,现在使用HIT跟踪 run跟踪功能,在我的程序里碰到点问题,还请赐教 选了一部分代码添加到HIT跟踪,在选的代码处设置断点,程序运行到断点,按单步跟踪,当执行到第二个PUSH时,程序就 ...
 - 【poi】用POI新建一个xlsx文件【或者说将数据存入到xlsx中】/【将数据从xlsx中获取到项目中】
			
第一部分:写入xlsx中 使用POI创建一个xlsx文件: 项目结构如下: 具体使用的POI中的 XSSFWorkbook xlsx对象 Sheet 工作簿对象 Row 行对象 Cell 单元格 ...