提交时间:2026-04-11 15:52:41
运行 ID: 41208
#include<bits/stdc++.h> using namespace std; int N=100; uint64_t s = N, t = 0; uint64_t next() { s ^= (s << 13); s ^= (s >> 7); s ^= (s << 17); return s; } int main(){ int n;cin>>n; if(n!=5) return 0; //cin >> N >> type; int type=4;N=2e7; if (type == 1) { vector <uint64_t> vec; vec.reserve(N); for (int i = 0; i < N; i++) vec.push_back(next()); sort(vec.begin(), vec.end()); cout << vec[next() % N] << endl; } if (type == 2) { //2N 次 xor-shift set <uint64_t> s; for (int i = 0; i < N; i++) s.insert(next() % (2 * N)); int cnt = 0; for (int i = 0; i < N; i++) { if (s.count(next() % (2 * N))) cnt++; } cout << cnt << endl; } if (type == 3) { //3N 次 xorshift map <uint64_t,uint64_t> m; for (int i = 0; i < N; i++) { auto idx = next() % (2 * N), val = next(); m[idx] = val; } uint64_t val = 0; for (int i = 0; i < N; i++) { auto it = m.find(next() % (2 * N)); if (it != m.end()) val += it -> second; } cout << val << endl; } if (type == 4) { //N 次 xorshift priority_queue <uint64_t> pq; for (int i = 0; i < N; i++) pq.push(next()); uint64_t val = 0; while (pq.size() > 1) { // 避免编译器优化 val += pq.top(); pq.pop(); } cout << val << endl; } }