码迷,mamicode.com
首页 > 其他好文 > 详细

CF527D Clique Problem

时间:2018-09-22 17:03:56      阅读:143      评论:0      收藏:0      [点我收藏+]

标签:col   ret   lse   难度   ble   cout   坐标   div   friend   

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;
}

 

CF527D Clique Problem

标签:col   ret   lse   难度   ble   cout   坐标   div   friend   

原文地址:https://www.cnblogs.com/wlzs1432/p/9690247.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!