手动离散化の模板

版权声明:并没卵用的版权声明~喜欢的就在评论区聊聊天吧~~ https://blog.csdn.net/Frocean/article/details/82143313

不会用 stl 的 Frocean 看见别人用一行 unique 解决离散化 感觉好厉害

但为什么打主席树别人 unique 能 100 分 而我的只有 20 分 啊......

但是就是不想学 =-=

于是自己打了个 手动的 离散化 当然 sort 还是要用一下的啦哈哈哈哈.......

费时间 费空间 岂不美哉

下放代码

struct Discretization {
	int value,rank;
} s[MAXN];
int cpy[MAXN],n;
short cmpto(Discretization x,Discretization y)
{
	return x.value < y.value;
}
short cmpback(Discretization x,Discretization y)
{
	return x.rank < y.rank;
}
int main()
{
	scanf("%d",&n); for (int a = 1 ; a <= n ; ++ a)
	scanf("%d",&s[a].value),s[a].rank = a;
	sort(s + 1,s + n + 1,cmpto);
	for (int a = 1 ; a <= n ; ++ a) cpy[a] = s[a].value;
	for (int a = 1 ; a <= n ; ++ a)
		if (cpy[a] == cpy[a - 1]) s[a].value = s[a - 1].value;
		else s[a].value = s[a - 1].value + 1;
	sort(s + 1,s + n + 1,cmpback);
	return 0;
}

猜你喜欢

转载自blog.csdn.net/Frocean/article/details/82143313