SRM 426

本文介绍了一种算法,用于计算给定区间内不同数字组合的数量。通过预处理数字集合并利用深度优先搜索策略,该算法能在合理的时间内解决大规模区间问题。

D2 hard   DistinctDigits

 

 

选定一个区间[low,high],将每个数的数字按小到大排序,去掉所有0,构成一个集合。问不同的集合种类。

 

区间数目相当之大,因此无法从区间各个数来推得答案。考虑到最后一个样例中几近题目最大限度,结果仅为19519,我们可以先搜索集合的种类,然后再逆推是否可组成区间内的数字。

 

当集合的数字个数小于len(high)大于len(low)时,必然可以得到区间内的某一数字。

 

当集合的数字个数和high或者low相同时,我们可以继续进行一字符串搜索。

 

最终最大结果用时1.4s。

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值