找回密码
 立即注册
首页 业界区 科技 2025 牛客寒假 6 部分题解 (E, D, H, I)

2025 牛客寒假 6 部分题解 (E, D, H, I)

杆树 10 小时前
本文首先发布于个人博客,博客园不定期更新,推荐去我的博客阅读。
I 小鸡的排列构造的 checker

看题第一反应是主席树。
定义 \(lst[x]\) 表示值 \(x\) 出现的下标(因为是排列只会出现一次),则每次询问中要求的区间排名即为 \(lst\) 上 \(p[c]\) 左侧在 \([l,r]\) 之间的数的个数,加上 \(l\) 就是答案。使用扫描线——离线树状数组解决即可。(如果你没有学过二位数点,类比树状数组求逆序对即可)。
赛时代码:
[code]int n, m;cin >> n >> m;vector p(n + 1);for (int &num : p | views::drop(1)) {    cin >> num;}struct Query {    int l, r, c, id;};vector queryByCVal(n + 1);for (int i = 0; i < m; i++) {    Query query;    auto &[l, r, c, id] = query;    cin >> l >> r >> c;    id = i;    queryByCVal[p[c]].push_back(query);}vector lst(n + 1);for (int i = 1; i  m;int parity = 0;for (int i = 1; i > l >> r >> c;    parity = (r - l + 1) & 1;}if (parity == 1) {    for (int i = n - 1; i >= 1; i -= 2) {        cout
您需要登录后才可以回帖 登录 | 立即注册