zoukankan      html  css  js  c++  java
  • 集训 D1T1 clique

    将点(xi,wi)看成区间(xi-wi,xi+wi),那么两个点有连边当且仅当两个区间没有公共点。删去所有包含其它区间的区间,在剩下的区间中每次贪心取一个能取的坐标最小的区间。

    #include<bits/stdc++.h>
    using namespace std;
    int n;
    struct line{int l,r;}x[200010];
    inline bool cmp(line a,line b){return a.l<b.l;}
    int main(){
        //freopen("clique.in","r",stdin);
        //freopen("clique.out","w",stdout);
        scanf("%d",&n);
        for(int i=1;i<=n;i++){
            int j,k;
               scanf("%d%d",&j,&k);
              x[i].l=j-k;
              x[i].r=j+k;
        }
        sort(x+1,x+n+1,cmp);
        int k=0;
        for(int i=1;i<=n;i++){
           while(k&&x[i].r<x[k].r)k--;
           x[++k]=x[i];
        }
        n=k;
        for(int i=1,j=-2100000000,k=0;i<=n;i++)
            if(x[i].l>=j){
                j=x[i].r;
                 k++;
            }
        printf("%d
    ",k);
        return 0;
    }
  • 相关阅读:
    mysql日志
    验证栈序列
    限流方案分析
    集合
    数据结构-树
    链表的中间节点
    PHP实现链表
    php扩展安装方式
    2017 Multi-University Training Contest
    用LCT解一类动态图的问题
  • 原文地址:https://www.cnblogs.com/NINGLONG/p/7618007.html
Copyright © 2011-2022 走看看