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

即使是NP问题,也是可以想办法降规模的

Posted by dut200901102 at 2011-07-20 23:06:17 on Problem 3977
这题显然是个NP难的问题,必须使用枚举算法,但是N=35,硬搞显然是不行的。
但是我们完全可以把这个集合一拆为2,这样每个小集合的规模为17,枚举量大概是130000。
这样我们就得到了两个大小都为130000的答案集合,接下来的问题就是合并这两个答案集合。
对于其中一个集合的一个元素,朴素的合并方法显然是让它和另一个集合中的每一个元素分别结合,但是这样的算法规模又回到了和暴力一样了。按照最优的思路,对于第一个集合中的元素x,它没有必要和另一个集合中每一个元素尝试合并,它要合并的那个数最好应该为-x,再不济也是和-x很近的那个数字。这一步很像平衡树中查询一个数字的前后继的操作,但是由于是静态的集合,所有我们完全可以二分逼近这个答案。
对于最后的时间复杂度,显然就是O(XlogX)(X=130000),毫无压力啊。

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