离散化
- 离散化可以说是非常不熟练的部分
做一次错一次
通过c++自带的函数可以很方便地进行离散化的操作 - 函数unique去重,lower_buond在有序的序列上二分查找。
for(int i=1;i<=n;i++) cin>>a[i],b[i]=a[i];
sort(b+1,b+n+1);int len=unique(b+1,b+n+1)-(b+1);//这里是地址,len求的是离散化后值域的长度
for(int i=1;i<=n;i++) a[i]=lower_bound(b+1,b+len+1,a[i])-b;//注意lower_bound返回的也是地址,需要减b
//还需要特别注意的是这里是i<=n而不是len,这个硬控我2个小时
- 全文背诵。