zoukankan      html  css  js  c++  java
  • CF527D

    题面

    这题还挺水的,把那个式子稍微变形一下就可以的到xi-wi>=xj+wj,易知:若把每个点看做一条线段,左端点是xi-wi,右端点是xi+wi,就只要求最多的不重叠的线段数就可以了,然后就是乱搞了

    #include <cstdio>
    #include <algorithm>
    using namespace std;
    const int N=200005;
    int n;
    struct point{int x,w;}a[N];
    inline bool cmp(point a,point b){return a.x<b.x;}
    struct node{int l,r;}line[N];
    inline bool cmp1(node a,node b){return (a.r!=b.r)?(a.r<b.r):(a.l<b.l);}
    int main()
    {
        int i,re=0,tmp=-2e9; scanf("%d",&n); for(i=1;i<=n;i++)scanf("%d%d",&a[i].x,&a[i].w); sort(a+1,a+n+1,cmp);
        for(i=1;i<=n;i++)line[i].l=a[i].x-a[i].w,line[i].r=a[i].x+a[i].w; sort(line+1,line+n+1,cmp1);
        for(i=1;i<=n;i++)
        {
            if(tmp<=line[i].l){tmp=line[i].r; re++;}
        }printf("%d
    ",re);
    }
  • 相关阅读:
    lnmp 优化
    linux-lnmp 搭建报错
    nfs 配置
    全网备份脚本rsync
    .Net面试题二
    软件设计模式
    .Net面试题一
    asp.net运行机制
    NHiberante的优缺点
    什么是架构、框架、模式和平台
  • 原文地址:https://www.cnblogs.com/gaojunonly1/p/9736518.html
Copyright © 2011-2022 走看看