unique:去重,离线,只能对有序数组使用
#include<bits/stdc++.h>
using namespace std;
int n,a[1000],len,q,as,ans;
int main()
{
cin>>n;
for(int i=1;i<=n;++i)
cin>>a[i];
sort(a+1,a+1+n);//排序
len=unique(a+1,a+1+n)-a-1;//处理之后的长度
cin>>q;
while(q--)
{
cin>>as;
ans=lower_bound(a+1,a+1+len,as)-a;//ask对应的下标
cout<<ans<<" "<<a[ans]<<'\n';
}
return 0;
}
map可在线
遍历map
找出
a
a
a数组[l,r]
区间每个数的出现次数
离散化桶了属于是
#include<bits/stdc++.h>
using namespace std;
map<int,int> m;
int n,Q,a[200001],an[200001];
int main()
{
ios::sync_with_stdio(false);
//freopen("daze.in","w",stdout);
cin>>n>>Q;
for(int i=1;i<=n;++i)
cin>>a[i];
for(int i=1;i<=n;++i)
cin>>an[i];
int l,r,k;
while(Q--)
{
cin>>l>>r>>k;
m.clear();
for(int i=l;i<=r;++i)
++m[a[i]];
for(auto i:m) cout<<i.second<<endl;//i是<key,value>的pair键值对
}
return 0;
}