#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];
}