牛客网暑期ACM多校训练营(第一场)J Different Integers

链接:https://www.nowcoder.com/acm/contest/139/J

题意:

给你【l,r】问【1,l】,【r,n】中有多少个不同的数。

思路:

可以参考上一篇博客:https://www.cnblogs.com/kls123/p/9342777.html

上一篇是问【l,r】内有多少不同的数,乍一看两题有点相似,可以想下能不能归并成一个问题

实际上我们只要再建一遍【1,n】的区间接在【1,n】后面,那么这个问题就变成了求【r,l+n】区间有多少个不同的数了

然后直接套用上一篇的解法就可以了,不过莫队算法这样写应该过不去,需要优化下,主席树的话,注意数据的大小,别开大了(因为清空标记数组开成了1e6,超时了10多发。。。最后加输入挂1.4s过)

离线+树状数组才是这道题的最好的姿势。。。随便改下就能过

代码写的贼丑就不放了,比比下思路

原文地址:https://www.cnblogs.com/kls123/p/9343050.html