Codeforces Round #545 (Div. 2) C. Skyscrapers

题目:https://codeforces.com/contest/1138/problem/C

第一回做到这种离散化的题目,,

关于离散化首先用两个stl函数:lower_bound和unique,,unique可以统计数组中一共有多少个不同的数字。

一维数组离散化:(重复元素离散化后相同)

    int n = 10;
    int a[100], b[100];
    for(int i = 0; i < n; i++) {
        cin >> a[i], b[i] = a[i];
    }
    sort(b, b + n);
    int num = unique(a, a + n) - a;
    for(int i = 0; i < n; i++) {
        a[i] = lower_bound(b, b + num, a[i]) - b + 1;
    }
    for(int i = 0; i < n; i++)
        cout << a[i] << " ";

把一维数组的应用到二维数组后就可以了。

#include
#define INF 0x3f3f3f3f
#define ll long long
#define mem(ar,num) memset(ar,num,sizeof(ar))
#define me(ar) memset(ar,0,sizeof(ar))
#define lowbit(x) (x&(-x))
#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define DEBUG cout<

 

你可能感兴趣的:(离散化)