码迷,mamicode.com
首页 > 其他好文 > 详细

[知识点]离散化

时间:2017-09-24 13:45:00      阅读:136      评论:0      收藏:0      [点我收藏+]

标签:cst   今天   turn   span   stream   blog   速度   namespace   大神   

今天刷内网的题,一道题要用离散,于是我就用了常用的map去搞

但是A了之后发现,我的速度竟然在rank list垫底T-T

然后xyz大神告诉我map离散慢的要死,于是我就再去学习一下主流的(也可能是非主流)离散打法

需要用STL中的vector(也可以不用),unique去重,lower_bound查找

#include<iostream>
#include<vector>
#include<cstdio>
#include<algorithm>
using namespace std;
#define pos(i,a,b) for(int i=(a);i<=(b);i++)
#define N 100
int n,b[N];
vector<int> a;
int my_find(int x){
	return lower_bound(a.begin(),a.end(),x)-a.begin()+1;//找到x是第几个 
}
int main(){
	cin>>n;
	pos(i,1,n){
		cin>>b[i];a.push_back(b[i]);
	} 
	sort(a.begin(),a.end());//排序 
	a.erase(unique(a.begin(),a.end()),a.end());//去重之后从vector中清除 
	pos(i,1,n){
		cout<<my_find(b[i])<<" ";
	}
	return 0;
}

  

[知识点]离散化

标签:cst   今天   turn   span   stream   blog   速度   namespace   大神   

原文地址:http://www.cnblogs.com/Hallmeow/p/7586822.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!