关注
void HuanF() {
int n;
cin >> n;
vector<int> p(n), q(n);
for (auto &x: p) cin >> x;
for (auto &x: q) cin >> x;
vector<int> cp(p);
std::map<int, int> pos;
for (int i = 0; i < n; ++i) pos[q[i]] = i + 1;
for (auto &x: p) x = pos[x];
BIT dp(n);
vector<int> suf(n + 1);
for (int i = n; i > 0; --i) {
suf[i] = dp.get(n + 1 - p[i - 1]) + 1;
dp.set(n + 1 - p[i - 1], suf[i]);
}
std::map<int, vector<PII> > bucket;
for (int i = 0; i < n; ++i) {
bucket[suf[i + 1]].emplace_back(cp[i], i);
}
vector<int> ans;
ans.reserve(bucket.rbegin()->first);
int idx = -1, qpos = -1;
for (auto &[x,y]: bucket | std::views::reverse) {
std::ranges::sort(y, std::greater<>());
for (auto &[f,s]: y) {
if (s > idx && pos[f] > qpos) {
idx = s;
qpos = pos[f];
ans.emplace_back(f);
break;
}
}
}
for (auto &x: ans) cout << x << " ";
}
查看原帖
点赞 2
相关推荐
查看21道真题和解析 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 你以为的实习VS真实的实习 #
167560次浏览 938人参与
# 妈妈治愈了你哪些脆皮时刻 #
52411次浏览 419人参与
# 我的实习日记 #
4205249次浏览 33443人参与
# 第一次找实习,我建议__ #
92797次浏览 941人参与
# 文远知行求职进展汇总 #
7594次浏览 43人参与
# 硬件/芯片校招攻略 #
22702次浏览 310人参与
# 从mentor身上学到了__ #
69702次浏览 958人参与
# 你觉得mentor喜欢什么样的实习生 #
66062次浏览 1100人参与
# 工作两年想退休了 #
287990次浏览 2095人参与
# 牛客AI文生图 #
31779次浏览 321人参与
# 机械笔面试考察这些知识点 #
24161次浏览 172人参与
# 你遇到过哪些神仙同事 #
151016次浏览 782人参与
# 如果人间有后悔药 #
31403次浏览 526人参与
# 秋招提前批,你开始投了吗 #
777957次浏览 8533人参与
# 面试线索爆料 #
139186次浏览 718人参与
# 数字马力求职进展汇总 #
364662次浏览 2433人参与
# 离家近房租贵VS离家远但房租低,怎么选 #
24100次浏览 154人参与
# 牛客2025仙途报告 #
108801次浏览 638人参与
# 研究所笔面经互助 #
132681次浏览 588人参与
# 我和mentor的爱恨情仇 #
122952次浏览 1057人参与