zoukankan      html  css  js  c++  java
  • CF527D Clique Problem

    CF527D Clique Problem

    题意简述

    数轴上有n 个点,第i 个点的坐标为xi,权值为wi。两个点i,j之间存在一条边当且仅当 abs(xi-xj)>=wi+wj。 你需要求出这张图的最大团的点数。(团就是两两之间有边的顶点集合)

    solution

    简单贪心

    化简原式:就是找xi-wi>=xj-wj

    那对于一个点i,设li=xi-wi,ri=xi+wi

    把每一个点看作[li,ri]间的一条线段,只要表示两点的

    线段不重叠,就有一条边,然后就是一道贪心了

    CF里面的神奇思维题,难度没有那么大,提高难度比较适宜(恶意评分?)

    #include<bits/stdc++.h>
    
    using namespace std;
    
    int n;
    struct node
    {
    int l;
    int r;
    friend bool operator < (node a1,node a2)
    {
    if(a1.r!=a2.r) return a1.r<a2.r;
    else return a1.l<a2.l;
    }
    } t[200000 + 10];
    
    int ans=0;
    
    int main()
    {
    cin>>n;
    for(int i=1;i<=n;i++)
    {
    int a,b;
    cin>>a>>b;
    t[i].l=a-b;
    t[i].r=a+b;    
    }
    sort(t+1,t+n+1);
    int r= -(1<<30);
    for(int i=1;i<=n;i++)
    {
    if(t[i].l>=r)
    {
    ans++;
    r=t[i].r;
    } 
    }
    cout<<ans<<endl;
    }
  • 相关阅读:
    search支持多种标签
    二级导航样式
    内容页与首页列表页调用点击数量
    常用标签
    20随机验证码
    19.请输入整数
    18.自定义过滤器表头排序
    17.js实现金山打字
    16.简单的自定义指令
    OC学习笔记 面向对象 继承与组合
  • 原文地址:https://www.cnblogs.com/wlzs1432/p/9690247.html
Copyright © 2011-2022 走看看