0816 京东笔试答案
0816 京东笔试答案
第一题, 减少逆序对数量
对于每个 ai, 找到 所有 aj = a[i] + 1 且 j < i 的 j, 则对于选择 j < L <= i 的 L 贡献 +1, 然后做一个前缀和取最大值即可
代码
```
#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>
#include <unordered_map>
using namespace std;
void solve()
{
int n; cin >> n;
vector<int> a(n + 10, 0), b(n + 10, 0), c(n + 10, 0);
unordered_map<int, vector<int>> pos;
for (int i = 1; i <= n; i ++)
{
cin >> a[i];
}
for (int i = 1; i <= n; i ++)
{
int v =a[i];
int t = v + 1;
if (pos.find(t) != pos.end())
{
for (int j : pos[t])
{
if (j < i)
{
b[j + 1] ++;
b[i + 1] --;
}
}
}
pos[v].push_back(i);
}
int ans = 0;
int tmp = 0;
for (int i = 1; i <= n; i ++)
{
tmp += b[i];
ans = max(ans, tmp);
}
cout << ans << endl;
}
int main()
{
int _ = 1;
cin >> _;
while (_ --)
{
solve();
}
}
```
第二题, 跳水打分
解法类似求区间最值, 维护每个长度为 m 的区间的最大值和最小值, 然后遍历过去即可算出答案。
代码
```
#include <bits/stdc++.h>
#define PII pair<long, long>
#define x first
#define y second
using namespace std;
int main()
{
int n, m;
cin >> n >> m;
priority_queue<PII> maxPq;
priority_queue<PII, vector<PII>, greater<PII>> minPq;
vector<long long> a(n + 10);
double ans = 0;
long long tmp = 0;
for (int i = 1; i <= n; i ++) cin >> a[i];
for (int i = 1; i <= m; i ++)
{
maxPq.push({a[i], i});
minPq.push({a[i], i});
tmp += a[i];
}
long long minV = minPq.top().x;
long long maxV = maxPq.top().x;
ans = double(tmp - minV - maxV) / (m - 2);
int ans2 = 1;
int l = 1, r = m;
while (r < n)
{
// cout << ans << endl;
tmp -= a[l]; l ++;
r ++; tmp += a[r];
minPq.push({a[l], l}); minPq.push({a[r], r});
maxPq.push({a[l], l}); maxPq.push({a[r], r});
while (minPq.top().y < l) minPq.pop();
while (maxPq.top().y < l) maxPq.pop();
if ((double(tmp - minPq.top().x - maxPq.top().x) / (m - 2)) > ans)
{
ans = double(tmp - minPq.top().x - maxPq.top().x) / (m - 2);
ans2 = l;
}
}
cout << ans2 << endl;
}
```
第一题, 减少逆序对数量
对于每个 ai, 找到 所有 aj = a[i] + 1 且 j < i 的 j, 则对于选择 j < L <= i 的 L 贡献 +1, 然后做一个前缀和取最大值即可
代码
```
#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>
#include <unordered_map>
using namespace std;
void solve()
{
int n; cin >> n;
vector<int> a(n + 10, 0), b(n + 10, 0), c(n + 10, 0);
unordered_map<int, vector<int>> pos;
for (int i = 1; i <= n; i ++)
{
cin >> a[i];
}
for (int i = 1; i <= n; i ++)
{
int v =a[i];
int t = v + 1;
if (pos.find(t) != pos.end())
{
for (int j : pos[t])
{
if (j < i)
{
b[j + 1] ++;
b[i + 1] --;
}
}
}
pos[v].push_back(i);
}
int ans = 0;
int tmp = 0;
for (int i = 1; i <= n; i ++)
{
tmp += b[i];
ans = max(ans, tmp);
}
cout << ans << endl;
}
int main()
{
int _ = 1;
cin >> _;
while (_ --)
{
solve();
}
}
```
第二题, 跳水打分
解法类似求区间最值, 维护每个长度为 m 的区间的最大值和最小值, 然后遍历过去即可算出答案。
代码
```
#include <bits/stdc++.h>
#define PII pair<long, long>
#define x first
#define y second
using namespace std;
int main()
{
int n, m;
cin >> n >> m;
priority_queue<PII> maxPq;
priority_queue<PII, vector<PII>, greater<PII>> minPq;
vector<long long> a(n + 10);
double ans = 0;
long long tmp = 0;
for (int i = 1; i <= n; i ++) cin >> a[i];
for (int i = 1; i <= m; i ++)
{
maxPq.push({a[i], i});
minPq.push({a[i], i});
tmp += a[i];
}
long long minV = minPq.top().x;
long long maxV = maxPq.top().x;
ans = double(tmp - minV - maxV) / (m - 2);
int ans2 = 1;
int l = 1, r = m;
while (r < n)
{
// cout << ans << endl;
tmp -= a[l]; l ++;
r ++; tmp += a[r];
minPq.push({a[l], l}); minPq.push({a[r], r});
maxPq.push({a[l], l}); maxPq.push({a[r], r});
while (minPq.top().y < l) minPq.pop();
while (maxPq.top().y < l) maxPq.pop();
if ((double(tmp - minPq.top().x - maxPq.top().x) / (m - 2)) > ans)
{
ans = double(tmp - minPq.top().x - maxPq.top().x) / (m - 2);
ans2 = l;
}
}
cout << ans2 << endl;
}
```
全部评论
京东笔试要求双机位吗
这个第一题可以再细说一下吗
a了1.1还能进面吗
相关推荐
01-14 22:59
西安科技大学 Java
行云流水1971:这份实习简历的优化建议:
结构清晰化:拆分 “校园经历”“实习经历” 板块(当前内容混杂),按 “实习→校园→技能” 逻辑排版,求职意向明确为具体岗位(如 “市场 / 运营实习生”)。
经历具象化:现有描述偏流程,需补充 “动作 + 数据”,比如校园活动 “负责宣传” 可加 “运营公众号发布 5 篇推文,阅读量超 2000+,带动 300 + 人参与”;实习内容补充 “协助完成 XX 任务,效率提升 X%”。
岗位匹配度:锚定目标岗位能力,比如申请运营岗,突出 “内容编辑、活动执行” 相关动作;申请市场岗,强化 “资源对接、数据统计” 细节。
信息精简:删减冗余表述(如重复的 “负责”),用短句分点,比如 “策划校园招聘会:联系 10 + 企业,组织 200 + 学生参与,到场率达 85%”。
技能落地:将 “Office、PS” 绑定经历,比如 “用 Excel 整理活动数据,输出 3 份分析表;用 PS 设计 2 张活动海报”,避免技能单独罗列。
优化后需强化 “经历 - 能力 - 岗位需求” 的关联,让实习 / 校园经历的价值更直观。
若需要进一步优化服务,私信 点赞 评论 收藏
分享
查看19道真题和解析