关注
当时自己犯了很蠢的错误,用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
相关推荐
01-14 16:23
广州商学院 Java 点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 在大厂上班是一种什么样的体验 #
5229次浏览 69人参与
# 机械人避雷的岗位/公司 #
40891次浏览 267人参与
# 程序员找工作至少要刷多少题? #
9888次浏览 147人参与
# 刚入职的你踩过哪些坑 #
4396次浏览 92人参与
# 论秋招对个人心气的改变 #
6135次浏览 106人参与
# 为了减少AI幻觉,你注入过哪些设定? #
1973次浏览 56人参与
# 牛客AI体验站 #
3539次浏览 92人参与
# 一张图晒一下你的AI员工 #
3088次浏览 62人参与
# 程序员能干到多少岁? #
5917次浏览 90人参与
# 我现在比当时_,你想录用我吗 #
3792次浏览 64人参与
# 关于春招/暑期实习,你想知道哪些信息? #
4272次浏览 84人参与
# AI Coding的使用心得 #
2501次浏览 61人参与
# 找工作的破防时刻 #
252105次浏览 1958人参与
# 晒晒你司的新年福利 #
4216次浏览 70人参与
# 实习,不懂就问 #
165714次浏览 1476人参与
# 软开人,秋招你打算投哪些公司呢 #
180834次浏览 1397人参与
# 帆软软件工作体验 #
12846次浏览 70人参与
# 你投了多少份简历了? #
423082次浏览 3962人参与
# 黄金这个事上,你学到了什么 #
855次浏览 26人参与
# 暑假倒计时,你都干了些啥? #
40881次浏览 216人参与
OPPO公司福利 1081人发布