一些去重离散化操作

来源:互联网 发布:访问虚拟机nginx失败 编辑:程序博客网 时间:2024/05/16 16:13
#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;elseproof[len[k].ore].r=cnt;}i++;}for(int i=1;i<=m;++i)/*因为刚才的权值被重新排序,所以重新赋值一次*/ proof[i].w=w[i];}