CF940F Machine Learning
CF940F Machine Learning
首先显然可以直接树套树做,在权值线段树上二分即可。
但是这里数据 1e5 并且可以离线,我们可以想到直接莫队/值域分块来做。
那么直接带修莫队暴力维护即可。
代码:
#include
const int M=1e5+5;
template
inline void read(T &x){
x=0;char ch=getchar();bool f=false;
while(!isdigit(ch)){if(ch=='-'){f=true;}ch=getchar();}
while(isdigit(ch)){x=(x<<1)+(x<<3)+(ch^48);ch=getchar();}
x=f?-x:x;
return ;
}
template
inline void write(T x){
if(x<0) putchar('-'),x=-x;
if(x>9) write(x/10);
putchar(x%10^48);
return ;
}
int n,m,p,len,cnt1,cnt2,a[M],lsh[M<<1],ans[M];
int CB[M],num[M<<1];
int L=1,R=0,T=0;
struct Query{
int L,R,t,p1,p2,id;
inline bool operator<(const Query&it)const{return p1==it.p1?p2==it.p2?tQL)Add(a[--L]);
while(LQR)Del(a[R--]);
while(TQT)Modify(T--);
for(int&cur=ans[q[i].id]=1;CB[cur];++cur);
}
for(int i=1;i<=cnt1;++i) write(ans[i]),putchar('\n');
return 0;
}