离散化后将原来所有离散化前的值赋为离散化后的值,不要按需调用 map。 人话(以我的 add 为例):
add
inline void add(int p){ ++cnt[mp[a[p]]]; return; }
改为:
inline void add(int p){ ++cnt[a[p]]; return; }
而主函数需要加上一行:
for(int i=1;i<=n;++i) a[i]=mp[a[i]];