360提前批笔试

一.选择题

基本不会做,好几个数学题加机器学习。

二.编程题

第一题:给你一个长度为50000的序列,你每次可以把一个数值的所有位置的数+一个v(v可以为正负),问你最少操作几次可以把这个序列变成相等的。

第二题:给你一个长度为100000的序列,再给你一个长度为k的操作序列,记每一次操作数为vi,每次都会当前这个序列小于vi的数放左边,大于的放右边,注意相对顺序是不能变的。

这个题考虑,小的数先排一定不会影响大的,因此我们考虑离线做,对操作数从小到大排序,对于每一个操作数,我们先把小于他的数按相对顺序放,然后再考虑放他自己,操作完成后那些没有被移动的数按相对顺序放即可。复杂度为O(nlogn)

#include "bits/stdc++.h"
using namespace std;
using pii = pair<int, int>;
int main() {
	int n, m;
	cin >> n;
	vector<int> a(n), c(n);
	map<int, deque<int>> mp;
	for (int i = 0; i < n; i++) {
		cin >> a[i];
		mp[a[i]].push_back(i);
	}
	cin >> m;
	vector<int> b(m);
	for (int i = 0; i < m; i++) {
		cin >> b[i];
	}
	sort(b.begin(), b.end());

	vector<int> na;
	for (int i = 0; i < m; i++) {
		vector<int> val;
		if (mp.size()) {
			auto it = mp.begin();
			while (it != mp.end() && it->first < b[i]) {
				val.push_back(it->first);
				it = next(it);
			}
		}
		priority_queue<pii, vector<pii>, greater<pii>> Q;
		for (auto &p : val) {
			Q.push({mp[p].front(), p});
			mp[p].pop_front();
		}
		while (!Q.empty()) {
			auto [p, v] = Q.top();
			Q.pop();
			c[p] = true;
			na.push_back(v);
			if (!mp[v].size()) {
				mp.erase(v);
			} else {
				Q.push({mp[v].front(), v});
				mp[v].pop_front();
			}
		}
		if (mp.count(b[i])) {
			for (auto &p : mp[b[i]]) {
				c[p] = true;
				na.push_back(b[i]);
			}
			mp.erase(b[i]);
		}
	}
	for (int i = 0; i < n; i++) {
		if (!c[i]) {
			na.push_back(a[i]);
		}
	}
	a.swap(na);
	for (int i = 0; i < n; i++) {
		cout << a[i] << ' ';
	}
	return 0;
}

#360提前批笔试#
全部评论
同h卷,编程没做出来好崩溃
点赞 回复 分享
发布于 2024-08-03 20:50 江苏
也刚做完,同H卷!太难了吧
点赞 回复 分享
发布于 2024-08-03 18:20 广东
我也刚做完,H 卷
点赞 回复 分享
发布于 2024-08-03 17:53 广东
我也刚做完,佬是H卷吗
点赞 回复 分享
发布于 2024-08-03 16:49 上海

相关推荐

2025-12-08 07:42
门头沟学院 Java
27届末九,由于是女生,身边人几乎没有就业导向的,自学只能跟着网课,没人指导,很迷茫。下图是我目前的简历,不知道有需要修改的地方吗?求拷打。下面是目前的学习情况:目前算法过完了一遍力扣100和代码随想录,不过不是很熟,面经看了小林coding、JavaGuide,有一些没用过的技术看得不是很明白,掌握得不是很扎实。再加上常年跟黑马网课听思路,真正自己动手写代码的时间很少,这让我一直不敢投简历,总觉得内里空虚。项目没准备好面试相关的问题,简历上相应的考点不熟。如此种种。。。看到很多很多学长学姐大佬们的面经,愈发觉得面试可怕,自己没准备好,总担心自己是不是无望后端开发了。看到牛客很多同届以及更小一届的同学都找到实习了,很希望自己也能找到实习。而自己又好像摸不到后端学习的门路,只能不断赞叹黑马虎哥写的代码真优雅!微服务架构实在巧妙!消息队列、redis、sentinel、nacos、mybatisplus等等的引入都会让我赞叹这些工具的设计者的巧思,以及包括但不限于Java语言的优雅。然而只是停留在了解的程度,并不熟练。我是很希望能够继续深入探索这些知识的,只不过有一大部分时间都花在学校课程上了。我感觉我被困住了,我一方面必须保证我能够有个不错的学业分使我能有我几乎不想选择的读研退路(还有个原因是复习不全我会焦虑考试挂科,因此我会做好全面的准备,而这一步很费时间),一方面在B站学习各种网课,一方面得考虑提升自己并不扎实的算法基础,另一方面还得准备八股面经。这让我有点苦恼,我好像没那么多时间,因为绝大部分时间都花在了复习学校科目中了。我好像处处用时间,但收效甚微。想问问各位大佬是怎么平衡时间的呢?算法、项目和八股是怎么准备的呢?有什么高效的方法吗?谢谢您们花时间阅读我的稿件!
菜菜狗🐶:大胆投,我当时也是害怕面试,投多了发现根本约不到面🤡
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
2
6
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务