Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
Re:莫队算法+线段树!复杂度(n + q)sqrt(n)*log(n),可以是无序序列,可惜TLE。。In Reply To:Re:莫队算法+线段树!复杂度(n + q)sqrt(n)*log(n),可以是无序序列,可惜TLE。。 Posted by:test_solution at 2014-07-31 16:50:01 > > > 倒是根据你的复杂度提示蛋疼出了一个 (n+q)*sqrt(n)*log(n)的搞法(加强版),可 > 能比较复杂,比较暴力,暂时没想到简单的: > > 将q个区间拆成O(q)个小区间,疑似是 2*q, 对每个小区间维护一个块状链表 然后 > 对询问的区间排序, 按照顺序,将小区间所在的块状链表合并或者删除(块状链表的每一块都是增序的,并且需要知道这一块的最大频率的数,以及头尾数字的频率), > 查询的时候暴力比较每个块的最大频率以及 头尾相同数字相接的 频率和进行比较,取最大值,不知道有木有简单点的办法。。。 > > > 至于这道题原题 序列是增序的,貌似可以蛋疼出O(n+q)的,类似区间最大值的单调队列求法。。。 额,可以直接对原序列搞出sqrt(n)个块, 每个块排序,然后维护每个块的最大频率 和首尾的频率, 然后直接查询区间, 如果区间跨越整个块,直接比较最大频率和 相邻块的首尾频率,没有跨越的直接brute force暴力扫描 整个块 这个复杂度好像就是 (n+q)*sqrt(n) 没有乘log(), 所有排序的复杂度加起来是n*log(n)的。 无视楼上的re..... Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator