先说下权值线段树的概念吧
待整理
附上吴迎学长离散化的标准代码
#include<iostream> #include<algorithm> #include<cstdio> using namespace std; int a[100],b[100],c[100],n; int solve()//离散化 { for(int i=0;i<n;i++) b[i]=a[i]; sort(b,b+n); int m=unique(b,b+n)-b;//去重 for(int i=0;i<n;i++) c[i]=lower_bound(b,b+m,a[i])-b;//二分找对应位置 for(int i=0;i<n;i++) printf("%d ",c[i]); } int main() { freopen("in.txt","r",stdin); cin>>n; for(int i=0;i<n;i++) cin>>a[i]; solve(); return 0; }
#include<iostream>#include<algorithm>#include<cstdio>using namespace std;int a[100],b[100],c[100],n;int solve()//离散化{ for(int i=0;i<n;i++) b[i]=a[i]; sort(b,b+n); int m=unique(b,b+n)-b; for(int i=0;i<n;i++) c[i]=lower_bound(b,b+m,a[i])-b; for(int i=0;i<n;i++) printf("%d ",c[i]);}int main(){
freopen("in.txt","r",stdin); cin>>n; for(int i=0;i<n;i++) cin>>a[i]; solve(); return 0;}
时间: 2024-11-01 11:13:25