摘要: 实际上把数组排序一遍加入链表中,再记录好数组原来的数在链表中的位置。我们只需要维护链表的删除操作就可以了。 # include <cstdio> # include <cstring> # include <cstdlib> # include <iostream> # include <vecto 阅读全文
posted @ 2017-03-29 16:05 free-loop 阅读(181) 评论(0) 推荐(0) 编辑
摘要: 考虑莫队算法,对于区间减小的情况,可以O(1)解决。对于区间增加的情况,可能需要O(n)解决。好在数据不卡莫队。 1200ms过了。 离线+线段树 760ms过了。 # include <cstdio> # include <cstring> # include <cstdlib> # includ 阅读全文
posted @ 2017-03-29 14:27 free-loop 阅读(291) 评论(0) 推荐(0) 编辑
摘要: 莫队算法如果我们已知[l,r]的答案,能在O(1)时间得到[l+1,r]的答案以及[l,r-1]的答案,即可使用莫队算法。时间复杂度为O(n^1.5)。如果只能在logn的时间移动区间,则时间复杂度是O(n^1.5*log n)。其实就是找一个数据结构支持插入、删除时维护当前答案。 这道题的话我们很 阅读全文
posted @ 2017-03-29 13:44 free-loop 阅读(177) 评论(0) 推荐(0) 编辑
摘要: 1A啊,激动。 首先,不修改的情况下可以直接用主席树搞,修改的话,直接用主席树搞一次修改的情况下复杂度是O(nlogn)的。 就像你要求区间和一样,用前缀和查询是O(1),修改是O(n),只不过主席树是前缀和套权值线段树,每个操作乘个logn。 如果用树状数组来维护区间和,查询是O(logn),修改 阅读全文
posted @ 2017-03-29 13:27 free-loop 阅读(807) 评论(0) 推荐(1) 编辑