AcWing——每日一题 打乱字母

农夫约翰面临一个问题,他的奶牛名字被贝茜打乱并重新排序。每个名字由小写字母组成,长度1到20。你需要找出每个名字在原始有序列表中的可能位置范围。通过分析,可以采用贪心算法先调整每个名字到字典序最小和最大状态,然后用二分查找确定其在原始列表中的最高和最低位置。时间复杂度为O(nlogns),其中n是名字数量,s是名字平均长度。
摘要由CSDN通过智能技术生成

农夫约翰将按字典序排列的 N 头奶牛的名字列表贴在了牛棚的门上。
每个奶牛的名字都由一个长度介于 1 到 20 之间的由小写字母构成的唯一字符串表示。
麻烦制造者贝茜将列表中的奶牛名字重新排序打乱了列表。
此外,她还对每头奶牛的名字中的字母顺序进行了重新排列(也可能保持不变)。
给定修改过后的列表,请帮助约翰确定列表中的每个名字可能出现在原始列表中的最低和最高位置。

输入格式
第一行包含整数 N N N
接下来 N N N 行,按照修改过后列表的顺序,给出了修改过后的奶牛的名字。

输出格式
N N N 行,第 i 行输出给定的第 i 个字符串在原始列表中可能的最低和最高位置。

数据范围
1 ≤ N ≤ 50000 1≤N≤50000 1N50000

4
essieb
a
xzy
elsie


2 3
1 1
4 4
2 3

分析 :对于单个字符串来说,他的字典序越小他靠前的可能越大(假设总体位置不变),反之也成立,那么我们总可以通过逐字符将其调整到最小进

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值