1 条题解
-
0
//使用sort(a+1,a+n+1)进行从小到大排序 //int cnt=unique(a+1,a+n+1)-(a+1)得到排序去重以后的数目 //int k=lower_bound(a+1,a+cnt+1,d[i])-a; ////在a[1]到a[cnt]中寻找d[i]第一次出现的位置 #include<bits/stdc++.h> using namespace std; const int N=1e5+10; int a[N],d[N];//原数组和离散化数组 int main() { int T,n; cin>>T; while(T--) { cin>>n; for(int i=1;i<=n;i++) { cin>>a[i]; d[i]=a[i];//同步原数组数据 } sort(a+1,a+n+1);//第一步排序 int cnt=unique(a+1,a+n+1)-(a+1);//去重 for(int i=1;i<=n;i++) { d[i]=lower_bound(a+1,a+cnt+1,d[i])-a;//在a[1]到a[cnt]中寻找d[i]第一次出现的位置 } for(int i=1;i<=n;i++) { cout<<d[i]<<" "; } cout<<endl; } return 0; }
- 1
信息
- ID
- 1614
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者