考场上想到了没打完,细节思路还是不是很优,我原先的想法是每一次找完后标记那个点,下次再继续找(并不是这个意思,说不清楚)但实际上和平衡树一样加个大小就很好写了 #include<bits/stdc++.h> using namespace std; typedef long long ll; const int MAXN=500005; const int DEP=31; int N,M; ll ans,s[MAXN]; struct node{ ll val; int x,k; bool o…
题意 类似超级钢琴,找最优解用可持久化trie. code: #include<bits/stdc++.h> using namespace std; #define re register typedef long long ll; const int maxn=5*1e5+10; int n,m,tot; int root[maxn],last[maxn*40*2]; int trie[maxn*40][2]; ll ans; ll a[maxn],sum[maxn]; struct no…