离散化----

对于范围很大,但实际用到的范围很小时,可以靠考虑离散化节省空间。

数组:

1.
int tot=unique(a,a+n)-a;
///unique返回的是把相邻重复的放到后面之后的前面的地址,-a之后是其不重复的大小,size()。

2.
vector<int>v;
erase(unique(v,begin(),v.end()),v.end());///是重复的删除 erase(删除首地址,删除末地址)只能用于STL
除了容器以外,还可以作用于string
string ss="12345";
ss.erase(0,2);  erase(删除首下表,删除末下标(但不包括))

离散化:

for(int i = 1; i <= n ; i++){
     scanf("%d %d",&L[i],&R[i]);
     a[tot++]=L[i],a[tot++]=R[i];
}sort(a,a+tot);
tot=unique(a,a+tot)-a;
for(int i = 1 ; i <= n ; i++){
     int l=lower_bound(a,a+tot,L[i])-a+1;//离散化之后的下标
     int r=lower_bound(a,a+tot,R[i])-a+1;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值