P4168 [Violet]蒲公英(分块)
询问区间最小的众数 先离散化,nsqrt(n)预处理,然后我用vector存了每个值对应的位置,每次二分地找某个值在指定区间当中出现了几次 不开O2疯狂TLE,开了就过了,vector大法好, 可以顶平衡树 代码: #include<bits/stdc++.h> using namespace std; const int maxn=500005; const int inf=0x3f3f3f3f; inline int read(){ char ch=getchar();int s=0,w=1; while(ch<48||ch>57){if(ch=='-')w=-1;ch=getchar();} while(ch>=48&&ch<=57){s=(s<<1)+(s<<3)+ch-48;ch=getchar();} return s*w; } inline void write(int x){ if(x<0)putchar('-'),x=-x; if(x>9)write(x/10); putchar(x%10+48); } int n,m,lastans=0,l,r; int a[maxn],b[maxn]; int cnt[maxn],ans[1000][1000],num[1000][1000]; int id[maxn],from[1000],to[1000],tot;