Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/153.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ std::multiset vs std::vector.在一个代码中使用TLE,但在另一个代码中使用AC_C++_Sorting_Time Complexity_Binary Search_Multiset - Fatal编程技术网

C++ std::multiset vs std::vector.在一个代码中使用TLE,但在另一个代码中使用AC

C++ std::multiset vs std::vector.在一个代码中使用TLE,但在另一个代码中使用AC,c++,sorting,time-complexity,binary-search,multiset,C++,Sorting,Time Complexity,Binary Search,Multiset,问题链接: 我假设存在某种与时间复杂性有关的问题,但我无法确定我在这里做错了什么 获取时间限制超出此代码中的判定: 包括 使用名称空间std; 定义整型长整型 主要的 { int n,m; 扫描%lld%lld,&n,&m; 矢量图; forint i=0;i这是由于您使用的tickets.橡皮擦索引语句造成的 在向量中,无论排序与否,erase都处于启用状态,而对于多集,erase通常为Ologn 所以,当你使用一个向量,然后在一个大小为m的for循环中使用erase时,每次i的迭代都会得到额

问题链接:

我假设存在某种与时间复杂性有关的问题,但我无法确定我在这里做错了什么

获取时间限制超出此代码中的判定:

包括 使用名称空间std; 定义整型长整型 主要的 { int n,m; 扫描%lld%lld,&n,&m; 矢量图; forint i=0;i这是由于您使用的tickets.橡皮擦索引语句造成的

在向量中,无论排序与否,erase都处于启用状态,而对于多集,erase通常为Ologn

所以,当你使用一个向量,然后在一个大小为m的for循环中使用erase时,每次i的迭代都会得到额外的结果,从而导致nlogn排序的总复杂性+m*logn lower_bound+n erase=Om*n,这太多了

但对于multiset,使用erase会为每次迭代获得额外的Ologn,从而导致在multiset+m*logn lower_bound+logn erase=Om+nlogn中插入nlogn的总时间复杂度

我希望它能澄清你的疑问。阅读下面的链接以更好地理解。

在评估之前对向量进行排序可能是程序运行时间增加的原因。