[TIOJ] 1902. 「殿仁.王,不認識,誰啊?」,然後他就死了……
題目連結: https://tioj.infor.org/problems/1902 直接回滾莫隊後套個 trie 來查區間 xor 最大值,複雜度 $O((N^2/K + QK) \log C)$ 之類的(沒仔細算),$K$好好挑一下就會過。 p.s. 好像好多古代人的解都是 $O(N^2 + Q)$ 😥 #include <algorithm>
#include <functional>
#include <iostream>
#include <iterator>
#include <numeric>
#include <utility>
#include <vector>
int main() {
std::cin.tie(nullptr)->sync_with_stdio(false);
auto maxi = [](auto &a, auto b) { a = std::max(a, b); };
int n, q;
std::cin >> n >> q;
std::vector<uint32_t> a(1);
std::copy_n(std::istream_iterator<int>(std::cin), n, std::back_inserter(a));
std::partial_sum(a.begin(), a.end(), a.begin(), std::bit_xor());
struct Q {
int l, r, id;
Q(int l_, int r_, int id_) : l(l_), r(r_), id(id_) {}
};
static constexpr int K = 128;
std::vector<std::vector<Q>> qs((n + K - 1) / K);
for (int ...