博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
uva 11732 "strcmp()" Anyone?
阅读量:6593 次
发布时间:2019-06-24

本文共 1845 字,大约阅读时间需要 6 分钟。

 

题意:

给出许多字符串,他们两两按下面的函数比较

输出比较次数

s[i]==t[i]  ,  和  s[i]=='\0'   各算一次比较 

 

 

 法一:

每两个字符串,要么全部匹配,要么中间停止匹配

如果全部匹配,比较次数为 2*len+2(‘\0’两次匹配)

如果中间停止匹配,比较次数为 2*相同前缀长度+1 (1次失败匹配后退出)

所以

1、对于第i个字符串,先加上i-1,即假设全部 中间停止匹配

这样最后再加上全部匹配数

2、匹配一个就+sum*2

#include
#include
#define N 1001using namespace std;char s[N];int sum[N*4001],len,trie[N*4001][63],tot;long long ans;int mark[N*4001];int get(int i){ if(s[i]>='0'&&s[i]<='9') return s[i]-'0'; if(s[i]>='a'&&s[i]<='z') return s[i]-'a'+10; if(s[i]>='A'&&s[i]<='Z') return s[i]-'A'+36;}void insert(int cnt){ int root=0,id; ans+=cnt; for(int i=0;i
View Code

 

法二:

用cnt记录现在还剩下几个是匹配的

那么每次

1、ans+=cnt-sum 匹配失败

2、ans+=sum*2  匹配成功

3、cnt=sum 

注意:为了好处理,所以字符串的结束符也算上了

那么这就要循环到len,另外特殊给‘\0’赋一个id

#include
#include
#define N 1001using namespace std;char s[N];int sum[N*4001],len,trie[N*4001][63],tot;long long ans;int get(int i){ if(s[i]>='0'&&s[i]<='9') return s[i]-'0'; if(s[i]>='a'&&s[i]<='z') return s[i]-'a'+10; if(s[i]>='A'&&s[i]<='Z') return s[i]-'A'+36; return 62;}void insert(int cnt){ int root=0,id; for(int i=0;i<=len;i++) { id=get(i); if(!trie[root][id]) { trie[root][id]=++tot; memset(trie[tot],0,sizeof(trie[tot])); sum[tot]=0; } root=trie[root][id]; ans+=cnt-sum[root]; ans+=sum[root]<<1; cnt=sum[root]; sum[root]++; }}int main(){ int n,t=0; while(scanf("%d",&n)!=EOF) { if(!n) return 0; memset(trie[0],0,sizeof(trie[0])); ans=0;tot=0; for(int i=1;i<=n;i++) { scanf("%s",s); len=strlen(s); insert(i-1); } printf("Case %d: %lld\n",++t,ans); }}
View Code

 

转载于:https://www.cnblogs.com/TheRoadToTheGold/p/6958455.html

你可能感兴趣的文章
python 抽象类、抽象方法、接口、依赖注入、SOLIP
查看>>
笔记1
查看>>
POJ1068 Parencodings 解题报告
查看>>
字符串连接[不用库函数]
查看>>
使用Hystrix实现自动降级与依赖隔离-微服务
查看>>
Parcelbale接口
查看>>
新建一个express工程,node app无反应
查看>>
Python去掉字符串中空格的方法
查看>>
[转] 用GDB调试程序(五)
查看>>
OCM_第十一天课程:Section5 —》数据仓库
查看>>
水晶报表
查看>>
kettle-多文件合并
查看>>
MyEclipse6.5的反编译插件的安装
查看>>
Jenkins + Ansible + Gitlab之ansible篇
查看>>
cogs 539. 牛棚的灯
查看>>
SQL SERVER 备份数据库到指定路径语句
查看>>
3.Knockout.Js(属性绑定)
查看>>
v140平台工具集与v110工具集选择
查看>>
EF6+Sqlite连接字符串的动态设置
查看>>
下拉加载更多
查看>>