码迷,mamicode.com
首页 > 其他好文 > 详细

lower_bound不能乱用。。血的教训!

时间:2014-08-19 09:19:33      阅读:191      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   使用   io   数据   for   ar   

之前写了一题本应用Splay维护单点修改,查询最小的不小于它的那个数排在哪个位置。

我偷了下懒,用STL做。。。结果TLE了。。。

 

我们使用这段短短的代码进行测试:

#include <cstdio>
#include <set>

using namespace std;

set <int> g;
int n;

int main() {
    freopen("s.in","r",stdin);
    freopen("s.out","w",stdout);
    scanf("%d", &n);
    g.clear();
    for (int i=1;i<=n;i++) g.insert(i);
    for (int i=1;i<=n;i++) printf("%d\n", *lower_bound(g.begin(), g.end(), i));
    return 0;
}

我们尝试n = 10000的测试数据,用时2.71s。

我们尝试n = 50000的测试数据,用时64.25s。

我们去掉lower_bound试试?

尝试n = 10000的测试数据,用时0.01s。

尝试n = 50000的测试数据,用时0.1s。

看来在STL set里用lower_bound效率是n^2的。

 

看来。。我还是得认认真真地写Splay。。。

lower_bound不能乱用。。血的教训!,布布扣,bubuko.com

lower_bound不能乱用。。血的教训!

标签:style   blog   color   使用   io   数据   for   ar   

原文地址:http://www.cnblogs.com/africamonkey/p/3921220.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!