社区讨论

65pts求调

P3567[POI 2014] KUR-Couriers参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@mi87u42z
此快照首次捕获于
2025/11/21 10:03
4 个月前
此快照最后确认于
2025/11/21 12:31
4 个月前
查看原帖
CPP
#include <bits/stdc++.h>
#define pb push_back
#define pf(a) push_front(a)
#define pof pop_front
#define pob pop_back
#define fr() front()
#define ba() back()
#define ls(x) x << 1
#define rs(x) (x << 1) | 1
#define re register
#define in(a) insert(a)
#define fi first
#define se second
#define gcd(a, b) __gcd(a, b)
#define l2(a) log(a) / log(2)
#define ui128 unsigned __int128
#define ll long long
#define pll pair<ll, ll>
#define ull unsigned long long
#define pii pair<int, int>
#define pq1 priority_queue<int>
#define pq2 priority_queue<int, vector<int>, greater<int>>
#define ui unsigned int
#define db double
#define Add1(u,v) g[u].pb(v)
#define Add2(u,v,w) g[u].pb({v,w})
#define IOS ios::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr)
using namespace std;

int n, q;
vector<int> a;
map<int, vector<int>> pos;

signed main() {
    IOS;
    cin >> n >> q;
    a.resize(n);
    for (int i = 0; i < n; i++) {
        cin >> a[i];
        pos[a[i]].pb(i);
    }
    mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
    while (q--) {
        int l, r;
        cin >> l >> r;
        l--;
        r--;
        int len = r - l + 1;
        int k = len / 2;
        int found = -1;
        for (int iter = 0; iter < 30; iter++) {
            int idx = uniform_int_distribution<int>(l, r)(rng);
            int val = a[idx];
            const auto& v = pos[val];
            int cnt = upper_bound(v.begin(), v.end(), r) - lower_bound(v.begin(), v.end(), l);
            if (cnt > k) {
                found = val;
                break;
            }
        }
        if (found == -1) {
            cout << 0 << "\n";
        } else {
            cout << found << "\n";
        }
    }
    return 0;
}
评测记录:https://www.luogu.com.cn/record/248481205

回复

0 条回复,欢迎继续交流。

正在加载回复...