bzoj2537: [neerc2007]Language Recognition
Description
Input
Output
#include<cstdio>
#include<algorithm>
typedef unsigned long long u64;
const int N=;
int n,ans=;
int nx[N][],id[N],pv[N],e[N],p=;
char s[];
bool ed[N];
int q[N],qp=,q1[N];
u64 h[N];
bool cmp(int a,int b){return h[a]<h[b];}
u64 hash(int w){
u64 v=;
for(int i=;i<;i++)v=v*+id[nx[w][i]];
if(e[w])v+=;
return v;
}
int main(){
scanf("%d",&n);
while(n--){
scanf("%s",s);
int w=;
for(int i=;s[i];i++){
int c=s[i]-'a';
if(!nx[w][c])nx[w][c]=++p;
pv[nx[w][c]]=w;
w=nx[w][c];
}
e[w]=;
}
for(int i=;i<=p;i++)id[i]=i;
for(int i=;i<=p;i++)if(e[i]){
bool is=;
for(int j=;j<;j++)if(nx[i][j]){is=;break;}
if(is)ed[q[qp++]=i]=;
}
while(qp){
int m=qp;
qp=;
for(int i=;i<m;i++)h[q1[i]=q[i]]=hash(q[i]);
std::sort(q1,q1+m,cmp);
for(int i=,j=;i<m;i=j){
while(h[q1[i]]==h[q1[j]])id[q1[j++]]=q1[i];
if(i+<j)for(int k=i;k<j;k++)if(!ed[pv[q1[k]]])ed[q[qp++]=pv[q1[k]]]=;
}
}
for(int i=;i<=p;i++)if(id[i]==i)++ans;
printf("%d",ans);
return ;
}
bzoj2537: [neerc2007]Language Recognition的更多相关文章
- 如何将 Cortana 与 Windows Phone 8.1 应用集成 ( Voice command - Natural language recognition )
随着 Windows Phone 8.1 GDR1 + Cortana 中文版的发布,相信有很多用户或开发者都在调戏 Windows Phone 的语音私人助理 Cortana 吧,在世界杯的时候我亲 ...
- 论文笔记《Tracking Using Dynamic Programming for Appearance-Based Sign Language Recognition》
一.概述 这是我在做手势识别的时候,在解决手势画面提取的时候看的一篇paper,这里关键是使用了动态规划来作为跟踪算法,效果是可以比拟cameshift和kf的,但在occlusion,gaps或者离 ...
- bzoj AC倒序
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...
- hive
Hive Documentation https://cwiki.apache.org/confluence/display/Hive/Home 2016-12-22 14:52:41 ANTLR ...
- java开发常用jar包介绍(转载)
jta.jar 标准JTA API必要 commons-collections.jar 集合类 必要 antlr.jar ANother Tool for Language Recognition ...
- SSH框架整合配置所需JAR包(SSH整合)
转载于:http://www.cnblogs.com/kaige123/p/5719662.html Hibernate Jar: 1.hibernate3.jar,这个是hibernate3.0的核 ...
- J2EE相关总结
Java Commons The Java™ Tutorials: http://docs.oracle.com/javase/tutorial/index.html Java Platform, E ...
- POJ题目分类(按初级\中级\高级等分类,有助于大家根据个人情况学习)
本文来自:http://www.cppblog.com/snowshine09/archive/2011/08/02/152272.spx 多版本的POJ分类 流传最广的一种分类: 初期: 一.基本算 ...
- Spring入门学习(一)
SpringMVC基础平台补充(2016.03.03) 如果想要开发SpringMVC,那么前期依次安装好:JDK(jdk-8u74-windows-x64,安装后配置环境变量JAVA_HOME和CL ...
随机推荐
- Standard C++ Programming: Virtual Functions and Inlining
原文链接:http://www.drdobbs.com/cpp/standard-c-programming-virtual-functions/184403747 By Josée Lajoie a ...
- leetcode 135. Candy ----- java
There are N children standing in a line. Each child is assigned a rating value. You are giving candi ...
- LeetCode()Substring with Concatenation of All Words 为什么我的超时呢?找不到原因了!!!
超时代码 class Solution { public: vector<int> findSubstring(string s, vector<string>& wo ...
- Hardly Hard
You have been given the task of cutting out a quadrilateral slice of cake out of a larger, rectangul ...
- Oracle学习系列3
Oracle学习系列3 ************************************************************************************ 多表查 ...
- libGraphicsMagickWand.so: cannot open shared object file: No such file or directory stack traceback:
参考博文:http://www.linuxidc.com/Linux/2016-07/133213.htm ==>> Check Passed, the num of bbox and f ...
- c++特性:指向类成员的指针和非类型类模板参数和函数指针返回值 参数推导机制和关联型别
一.c++允许定义指向类成员的指针,包括类函数成员指针和类数据成员指针 格式如下: class A { public: void func(){printf("This is a funct ...
- JSBinding + SharpKit / 实战:转换 Survival Shooter
从 asset store 下载 Survival Shooter (商店里有2个版本,一种是给Unity5用的,一个是给Unity4.6用的,我们这个实验用的是后者,版本是2.2.如果) 1 删除多 ...
- 对象的引用和clone
$a=new s(); $b=$a; 这是引用,两者为同一个实例 $a=new s(); $b=$a; $b=clone $a; 这是clone,两者不是同一个实例,但拥有相同的属性 如果需要不相同的 ...
- VS产生sdf和ipch文件太大处理方案
方法: 工具-->选项-->文本编辑器-->C/C++-->高级-->回退位置,把始终使用回退位置设置为true,回退位置已在使用,不警告也设置为true,回退位置设置为 ...