小红书笔试
小红书笔试三道题一道都没A,第一题自定义排序91,第二题枚举+回溯55,第三题枚举+回溯0,cout骗了9%
全部评论
// 第二题
// 回溯 枚举
void run(long long& res, int curLen, vector<int> curIDs, const int n, vector<bool>& used, int k, const vector<int>& an, const vector<int>& bn){
if(curLen == k) {
long long sum = 0;
int minV = INT_MAX;
for(int i = 0; i < k; ++i){
sum += an[curIDs[i]];
minV = min(minV, bn[curIDs[i]]);
}
res = res < sum * minV ? sum * minV : res;
return;
}
for(int i = 0; i < n; ++i){
if(used[i] == false){
curIDs.emplace_back(i);
used[i] = true;
run(res, curLen+1, curIDs, n, used, k, an, bn);
used[i] = false;
curIDs = vector<int>(curIDs.begin(), curIDs.end()-1);
}
}
}
我也用的回溯,做了一些剪枝,但还是9%通过
int n, k;
int ret = 0;
vector<int> group;
void Loop(const vector<Info> &infos, int i, int m) {
if (group.size() + n - m - 1 < k)
return;
if (i == k) {
int a_sum = 0, b_min = -1;
for (int j = 0; j < k; ++j) {
a_sum += infos[group[j]].a;
if (b_min == -1)
b_min = infos[group[j]].b;
else
b_min = min(b_min, infos[group[j]].b);
}
ret = max(ret, a_sum * b_min);
return;
}
for (int j = m + 1; j < n; ++j) {
group.push_back(j);
Loop(infos, i + 1, j);
group.pop_back();
}
}
我感觉第二题能贪心,回溯不剪枝都会超时
可以看一下你的回溯代码吗?我回溯直接报运行时错误了(用例过了)
相关推荐
点赞 评论 收藏
分享
程序员牛肉:我个人觉得就是中厂吧,运气好点能进个大厂。
八月找暑期当然找不到了,现在各大厂的暑期实习一般都是三月多开放,五月多收尾。你这都八月多了肯定找不到,相当于是半夜去逛商场了。吃了信息差的亏了。
简历上的实习部分有很大的问题。你作为应聘后端的同学,实习经历中看不出来你干了哪些后端需求,一眼扫过去都是一些配置类的需求,Swagger文档就不要拿出来了。以及撰写技术文档和写单测这种经历。
所以建议你重写一下你的实习部分,重点突出需求,需求啊同学。比如详细的说一下自己是怎么使用GraalVM以及虚拟线程提高项目启动速度的。
调研了什么技术,有什么收获,有什么可以拿出来讲的技术点。
点赞 评论 收藏
分享