使用STL离散化

时间:2024-01-02 08:42:08
  1. 把原来的数组a复制一份拷贝b
  2. 用sort先把数组a排序
  3. 用unique消除a里面重复的元素
  4. 对于b中的每一个元素,用lower_bound找到它在a中的位置,也就是离散化之后的编号。
  5. 没了。
 #include <iostream>
 #include <cstdio>
 #include <cstdlib>
 #include <cstring>
 #include <cmath>
 #include <cctype>
 #include <algorithm>
 #include <queue>
 #include <deque>
 #include <queue>
 #include <list>
 #include <map>
 #include <set>
 #include <vector>
 #include <utility>
 #include <functional>
 #include <fstream>
 #include <iomanip>
 #include <sstream>
 #include <numeric>
 #include <cassert>
 #include <ctime>
 #include <iterator>
 const int INF = 0x3f3f3f3f;
 ][] = {{-,},{,},{,-},{,},{-,-},{-,},{,-},{,}};
 using namespace std;
 int main(void)
 {
     ] = {, , , , , }, b[];
     ; i < ; ++i) b[i] = a[i];
     sort(a, a+);
     ) - a;
     ;i < ; ++i)
         b[i] = lower_bound(a, a+len, b[i]) - a + ;
     ; i < ; ++i)
         printf("%d ", b[i]);
     printf("\n");

     ;
 }

嗨!中村。