bzoj1651(差分)

来源:互联网 发布:富士康跳樓事件知乎 编辑:程序博客网 时间:2024/05/16 15:38

其实就是找一个点,使覆盖的线段最多。

经典差分,注意需要离散化

 

#include<cstdio>#include<cstring>#include<cmath>#include<cstdlib>#include<algorithm>using namespace std;int n;struct aa{int l,r;}q[50005];int h[100005];int add[100005],ji[100005];int main(){scanf("%d",&n);int tot=0;for (int i=1;i<=n;i++)scanf("%d%d",&q[i].l,&q[i].r),h[++tot]=q[i].l,h[++tot]=q[i].r;sort(h+1,h+tot+1);tot=unique(h+1,h+tot+1)-h-1;for (int i=1;i<=n;i++){int l=lower_bound(h+1,h+tot+1,q[i].l)-h;int r=lower_bound(h+1,h+tot+1,q[i].r)-h;add[l]++;ji[r]++;}int now=0,ans=0;for (int i=1;i<=tot;i++){now+=add[i];if (now>ans) ans=now;now-=ji[i];}printf("%d",ans);return 0;}


总结

1:差分是一个非常重要的思想

0 0
原创粉丝点击