https://loj.ac/problem/504 题解 对于区间取\(\max\),这个比较好办,直接在线段树上打标记就行了. 如果让我们弹出前\(n\)个数,我们可以用类似超级钢琴的思想,队列中每个元素是一个线段树节点,弹出时记录最值的位置,然后分成两半继续做就行了. 代码 #include<bits/stdc++.h> #define N 500009 using namespace std; typedef long long ll; int n,a[N],m; int tr[N&l…
分析 代码(我的代码是瞎jb水过去的) #include<bits/stdc++.h> using namespace std; #define li long long li a[]; int main(){ li n=,i,j,k,kk; scanf("%lld",&k); a[++n]=; ==)a[++n]=,k/=; a[++n]=; )-,w=;i>;i/=) &&i!=){j=i;;w^=;k/=i;} ){puts(;} pri…