日奈 @ 2019-09-24 15:45:33
昨天看了某位大佬写的神仙代码,就自己写了写AC过了。
所以insert操作复杂度究竟是多少啊
#include <bits/stdc++.h>
#define cin(x) scanf("%d",&x)
using namespace std;
int n;
vector<int> v;
int main()
{
cin(n);
for(int i=1;i<=n;i++)
{
int x;
cin(x);
v.insert(lower_bound(v.begin(),v.end(),x),x);
if(i&1)
{
printf("%d\n",v[(i-1)/2]);
}
}
}
by emptysetvvvv @ 2019-09-24 15:50:11
@日奈
by 日奈 @ 2019-09-24 15:55:30
@lg_emptyset 那应该是数据比较水吧
by 地狱小鬼366 @ 2019-09-24 16:19:40
by Jason__Zhan @ 2019-09-24 16:33:56
vector.insert()跑1e5次在begin()处插入就是能过吧,至少我水平衡树还没有在1e5被卡过(hzw的0.5s时限分块除外)。
by 在想Peach @ 2019-11-14 15:49:54
数据不水也能过,vector利用的memcpy操作非常快,但比1e5更大的数据耗时就会急剧增高,在1e5内的数据操作都是堪比log级的速度
by 林聪 @ 2021-02-24 19:33:59
@日奈
vector+insert,亲测以下数据本机只需要0.7s就可以跑完:
100000
100000 99999 99998 ... 2 1
如果是
100000
1 2 3 ... 99999 100000
甚至只需要0.2s就可以跑完
by lcyxds @ 2021-03-15 09:34:05
P4309 [TJOI2013]最长上升子序列
Code 2 极限全 0 数据洛谷跑 332 ms
by lcyxds @ 2021-03-15 09:47:15
#include <vector>
using namespace std;
int main() {
vector<char> a;
for (register int i = 0; i < 837500; i++) a.insert(a.begin(), '\0');
}
这玩意跑5秒整你敢信
by lcyxds @ 2021-03-15 09:47:52
n方过八十万(确信)