离散化处理 模板
離散化模板:
#include<iostream> #include<cstdio> #include<algorithm> using namespace std; const int maxn=100000; int a[maxn]; int b[maxn]; int n,m; void lisan(); int main() {cin>>n;//元素個數for(int i=1;i<=n;++i) {scanf("%d",&a[i]);b[++m]=a[i];//b[]作為離散化的數組}lisan(); return 0; } void lisan() {sort(b+1,b+1+m);//將b數組排序,因為是從b[1]開始存儲的,所以要b+1m=unique(b+1,b+1+m)-b-1;//去重操作,返回不同元素的個數for(int i=1;i<=n;++i) {a[i]=lower_bound(b+1,b+1+m,a[i])-b;cout<<a[i]<<" ";} }為什么要離散化:
當以權值為下標的時候,值太大,存不下。?
然后把要離散化的每一個數組里面的數映射到另一個值小一點的數組里面去。
法2:
用一個struct存起來
總結
 
                            
                        - 上一篇: 2021年是牛市还是熊市?2021年怎么
- 下一篇: 分组密码简介和五大分组模式
