oazestar @ 2019-09-24 21:40:28
自己打的代码:
(简写)
vector<int> v;
n = in; a = in;
outn(a); v.pb(a);
for (int i = 2; i <= n; i += 2) {
a = in; v.ins(upper_bound(v.begin(), v.end(), a), a);
a = in; v.ins(upper_bound(v.begin(), v.end(), a), a);
outn(v[i / 2]);
}
然后一排
于是看了一眼题解
改了一下
n = in;
for (int i = 1; i <= n; ++i) {
a = in; v.ins(upper_bound(v.begin(), v.end(), a), a);
if (i & 1) outn(v[i / 2]);
}
于是
这是什么复杂度概念orz
by yzm123 @ 2019-09-25 21:13:30
@辰殷yu 有的时候真的会有玄学问题,我有道题吧mymset改成手动初始化就莫名其妙的0->100了,不知道为什么
by qwqqwq_qwqqwq @ 2019-09-25 22:03:27
@辰殷yu 这得取决于你的算法所决定的插入位置吧,我不太清楚你在写什么所以我没有办法解答
by oazestar @ 2019-09-26 18:49:47
@qwqqwq_qwqqwq 我的想法就是
1.读入第一个数,把它输出并放到vector里;(因为第一个数自己就是自己的中位数)
2.循环(n / 2) 次,在每个循环中,分别读入两个数并在vector中寻找合适的位置插入;
3.因为从 i = 2 开始,每次 i += 2 ,所以在每一次的循环内vector中会是奇数个排好序的数,那么就可以直接输出 v[i / 2] 就是它的中位数。
(蒟蒻思想,如果有什么不对的地方,恳请dalao指教qaq)