离散常用操作
#include<bits/stdc++.h> using namespace std; int n,m,t,x[101000],y[101000],a[201000]; int main() { scanf("%d%d",&n,&m);t=0; for(int i=1;i<=m;i++) { scanf("%d%d",&x[i],&y[i]); a[++t]=x[i];a[++t]=y[i]; } sort(a+1,a+t+1); t=unique(a+1,a+n+1)-a-1;//t就是所去重以后的数组长度,虽然我也不知道为什么要再减1... for(int i=1;i<=m;i++) { x[i]=lower_bound(a+1,a+n+1,x[i])-a; y[i]=lower_bound(a+1,a+n+1,y[i])-a; //lower_bound返回一个迭代器,指向键值>= key的第一个元素。 //upper_bound返回一个迭代器,指向键值> key的第一个元素。 } return 0; }
随便敲一敲,熟悉一下,顺便做个笔记以便于下次找