Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

Re:zju2112那个题有人0。03s过的。。到底是什么样的算法 啊?

Posted by zhouteng at 2008-07-30 16:36:20 on Problem 2104
In Reply To:Re:zju2112那个题有人0。03s过的。。到底是什么样的算法 啊? Posted by:atlas_of_rruucc at 2004-11-25 12:25:34
算法主要如下(树套树):

1、利用线段树对区间进行划分,在每个区间中建一棵平衡树,插入相应的元素(时间 N(logN)^2)

2、对于每次修改操作,在区间树(线段树)中进行查找,在查找过程中,对相应的区间,删除原有的数,插入新的元素(时间 M(logN)^2)

3、对于每次查询操作,先二分答案,再在区间树(线段树)上查找“查询区间”,对于每一个相应的区间进行二分查找,计算在查询区间中所有小于等于当前二分结果的数的个数,再进行二分(时间 M(logN)^3)

所以总时间O(N(logN)^2+M(logN)^3)

因为这个时间复杂度只是个粗略的估计,所以实际花费时间不会这么大。

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator