关注
当时自己犯了很蠢的错误,用Python写一直ac不了,所以搞了两个版本,后来发现都改好了,两个都能AC C++版本: #include <iostream>
#include <cstdio>
#include <vector>
#include <algorithm>
#define MAX(a,b) ((a) > (b) ? (a) : (b))
using namespace std;
int main(){
int t, res_m, res_f;
cin >> t;
for(int i = 0; i < t; i++){
int n;
res_m = 0;
res_f = 0;
cin >> n;
vector<int> v;
for(int j = 0; j < n; j++){
int x; scanf("%d",&x);
vector<int>::iterator pos_left,pos_right;
pos_left = std::lower_bound(v.begin(), v.end(), x);
pos_right = std::upper_bound(pos_left, v.end(), x);
int lo = pos_left - v.begin();
int hi = pos_right - v.begin();
v.insert(v.begin()+hi, x);
res_f += lo + hi - j;
res_m = MAX(res_m, res_f);
}
cout << res_m << ' ' << res_f << endl;
}
return 0;
} Python 版本: import bisect
T = int(input())
class my_class(object):
__slots__ = ['array', 'res_m', 'res_f']
def __init__(self, lst):
array = []
res_m, res_f = 0, 0
n = len(lst)
for i, x in enumerate(lst):
pos_left = bisect.bisect_left(array, x)
pos_right = bisect.bisect_right(array, x, pos_left)
res_f += pos_left + pos_right - i
res_m = max(res_m, res_f)
array.insert(pos_right, x)
print(res_m, res_f)
for _ in range(T):
n = int(input())
lst = list(map(int, input().split()))
my_class(lst)
查看原帖
点赞 2
相关推荐
点赞 评论 收藏
分享
02-05 22:21
广州航海学院 嵌入式硬件工程师 点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 腾讯音乐求职进展汇总 #
63137次浏览 358人参与
# 牛友故事会 #
341015次浏览 8843人参与
# 通信和硬件还有转码的必要吗 #
47270次浏览 487人参与
# 投递几十家公司,到现在0offer,大家都一样吗 #
174632次浏览 1239人参与
# 腾讯云智研发工作体验 #
14266次浏览 114人参与
# 烟草笔面经互助 #
12396次浏览 168人参与
# 面试之前应该如何准备? #
1719次浏览 52人参与
# 双非本科的出路是什么? #
109523次浏览 1062人参与
# 总结:offer选择,我是怎么选的 #
100355次浏览 702人参与
# 如何看待应届生身份? #
2811次浏览 55人参与
# 0offer互助地 #
296823次浏览 2423人参与
# 学历or实习经历,哪个更重要 #
79466次浏览 620人参与
# 你的秋招第一面感觉怎么样 #
62297次浏览 513人参与
# 工作中,努力重要还是选择重要? #
86863次浏览 1163人参与
# lastday知无不言 #
42206次浏览 394人参与
# 我在牛爱网找对象 #
162951次浏览 1228人参与
# 你的实习什么时候入职 #
119544次浏览 1154人参与
# 实习要如何选择和准备? #
24087次浏览 467人参与
# 选了这个offer,你有没有后悔? #
497069次浏览 3561人参与
# 夸一夸2024年的自己 #
22502次浏览 193人参与