关于两种离散化的小疑问
  • 板块灌水区
  • 楼主phil071128
  • 当前回复7
  • 已保存回复7
  • 发布时间2021/10/18 15:08
  • 上次更新2023/11/4 03:24:13
查看原帖
关于两种离散化的小疑问
306734
phil071128楼主2021/10/18 15:08

Rt,请问第一种离散化时间复杂度是否要略高于第二种.他们之间选择哪个更合适?

第一种(从别处粘过来的,只是想表达这个思路):

std::sort(a + 1, a + 1 + n);
len = std::unique(a + 1, a + n + 1) - a - 1;
for(int i=1;i<=n;i++) a[i]=std::lower_bound(a + 1, a + len + 1, x) - a;  // 查询 x 离散化后对应的编号

第二种:

struct node{
	int date,i;
}b[N];
bool cmp(node aa,node bb){
	if(aa.date==bb.date){
		return aa.i<bb.i;
	}
	return aa.date<bb.date;
}
int n,a[N];
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>b[i].date;
		b[i].i=i;
	}
	sort(b+1,b+1+n,cmp);
	int cnt=1;
	for(int i=1;i<=n;i++){
		if(b[i].date==b[i-1].date) cnt--;
		a[b[i].i]=cnt;
		cnt++;
	}
	for(int i=1;i<=n;i++){
		cout<<a[i];
	}
	return 0;
}
2021/10/18 15:08
加载中...