日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

离散化的一种姿势

發(fā)布時間:2025/3/14 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 离散化的一种姿势 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

之前我的離散化方法一直用set和map做,感覺使用stl不夠優(yōu)越。剛剛發(fā)現(xiàn)線段樹PPT給了一種離散化的新姿勢。。。

ax數(shù)組:要進(jìn)行離散化的數(shù)組

bx數(shù)組:離散化后的數(shù)組

id數(shù)組:ax數(shù)組的rank數(shù)組。即排序后id[i]表示為ax數(shù)組中第i大的數(shù)的位置。?


如果要從原數(shù)->離散化后的數(shù),還是需要用map,但是bx數(shù)組已經(jīng)與ax數(shù)組形成了對應(yīng)關(guān)系,所以map完全可以避免。

#include<bits/stdc++.h> #define eps 1e-9 #define FOR(i,j,k) for(int i=j;i<=k;i++) #define MAXN 1005 #define MAXM 40005 #define INF 0x3fffffff #define PB push_back #define MP make_pair #define X first #define Y second #define lc (k<<1) #define rc ((k<<1)1) using namespace std; typedef long long LL; int i,j,k,n,m,x,y,T,ans,big,cas,num,len; bool flag;int ax[MAXN],bx[MAXN],mp[MAXN],id[MAXN]; bool cmp(const int &x,const int &y) {return ax[x]<ax[y]; }void discreatize(int n) {for (int i=0;i<n;i++) id[i]=i;sort(id,id+n,cmp);//排序后id[i]表示為ax數(shù)組中第i大的數(shù)的位置。 mp[1]=ax[id[0]];//對應(yīng)關(guān)系 bx[id[0]]=1;//bx數(shù)組為ax離散化后的數(shù)組。 for (int i=1,k=1;i<n;i++){if (ax[id[i]]==ax[id[i-1]]) bx[id[i]]=k;else mp[++k]=ax[id[i]],bx[id[i]]=k;} } int main() {scanf("%d",&n);for (i=0;i<n;i++) scanf("%d",&ax[i]);discreatize(n);printf("id:\n");for (i=0;i<n;i++) printf("%d ",id[i]);printf("\nbx:\n");for (i=0;i<n;i++) printf("%d ",bx[i]);printf("\n");return 0; }

?

轉(zhuǎn)載于:https://www.cnblogs.com/zhyfzy/p/4420441.html

與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖

總結(jié)

以上是生活随笔為你收集整理的离散化的一种姿势的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。