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 |
即使是NP问题,也是可以想办法降规模的这题显然是个NP难的问题,必须使用枚举算法,但是N=35,硬搞显然是不行的。 但是我们完全可以把这个集合一拆为2,这样每个小集合的规模为17,枚举量大概是130000。 这样我们就得到了两个大小都为130000的答案集合,接下来的问题就是合并这两个答案集合。 对于其中一个集合的一个元素,朴素的合并方法显然是让它和另一个集合中的每一个元素分别结合,但是这样的算法规模又回到了和暴力一样了。按照最优的思路,对于第一个集合中的元素x,它没有必要和另一个集合中每一个元素尝试合并,它要合并的那个数最好应该为-x,再不济也是和-x很近的那个数字。这一步很像平衡树中查询一个数字的前后继的操作,但是由于是静态的集合,所有我们完全可以二分逼近这个答案。 对于最后的时间复杂度,显然就是O(XlogX)(X=130000),毫无压力啊。 Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator