一些去重离散化操作

#include<iostream>  
#include<ctime>  
#include<vector>  
#include<cstdlib>  
#include<algorithm>  
#include<map>  
using namespace std;  
map<int,int>H;  
vector<int>a;  
int main()  
{
    for(int i=1;i<10;i++)  
    {  
        for(int j=0;j<3;j++)
        {
            a.push_back(i);
        }
    }
    sort(a.begin(),a.end());
    a.erase(unique(a.begin(),a.end()),a.end());
    for(int i=0;i<a.size();i++)
        H[a[i]]=i+1;
    return 0;  
}

转:点击打开链接

void prepare(int *x) {
    fo(i,1,n) data[i]=x[i];
    sort(data+1,data+n+1);
    int m=unique(data+1,data+n+1)-data-1;
    fo(i,1,n) x[i]=lower_bound(data+1,data+m+1,x[i])-data;
}
void apart()
/*离散化*/ 
{
	sort(len+1,len+top+1,comp2);
	int i=1;
	int j;
	while(i<=top)
	{
		j=i;
		while(len[i].w==len[i+1].w)
		{
			if(i==top)
				break;
			i++;
		}
		cnt++;
		for(int k=j;k<=i;++k)
		{
			if(!len[k].type)
				proof[len[k].ore].l=cnt;
			else
				proof[len[k].ore].r=cnt;
		}
		i++;
	}
	for(int i=1;i<=m;++i)
	/*因为刚才的权值被重新排序,所以重新赋值一次*/ 
		proof[i].w=w[i];
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值