zoukankan      html  css  js  c++  java
  • 527D Clique Problem 判断一维线段没有两辆相交的最大线段数量

    这题说的是给了n个位置 在x轴上 每个位置有一个权值为wi,然后将|xi - xj|>=wi+wj ,满足这个条件的点建一条边,计算着整张图中有多少多少个点构成的子图,使得这个子图的节点数尽量的大,这个式子进行转变 我们可以知道离i这个点为wi+xi xi-wi 范围内的点都是不可以的,那么我们就将这个n个点转化为了n条线段,那么现在的任务是计算这个n条线段两两不想交的 最大数量, 对于每条 线段有 左端点和右端点,我们将他们进行右端点排序, 然后进行每条边的判断前面k条线段的最右边那条是否与当先这条相交,如果相交,可以得知这条线段我们是不会使用的,因为我们有比他更加优的线段,在前面,如果不想交我们就把线段条数+1.记录当前最右的那条线段。

     1 #include <iostream>
     2 #include <algorithm>
     3 #include <string.h>
     4 #include <cstdio>
     5 using namespace std;
     6 pair<int,int> P[200005];
     7 int main()
     8 {
     9     int n;
    10     while(scanf("%d",&n)==1){
    11          for(int i=0; i<n; i++){
    12               int x,w;scanf("%d%d",&x,&w);
    13               P[i] = {x+w,x-w};
    14          }
    15          sort(P,P+n);
    16          int r = -2000000000;
    17          int ans=0;
    18          for(int i=0; i<n; i++){
    19              if(P[i].second>=r){
    20                  r = P[i].first; ans++;
    21              }
    22          }
    23         printf("%d
    ",ans);
    24     }
    25     return 0;
    26 }
  • 相关阅读:
    三个录屏软件
    不用 PS 和 AI,5个网站能做出更好看的设计
    使用vue.js开发小程序
    js异步处理
    HTTP、HTTP1.0、HTTP1.1、HTTP2.0、HTTPS
    Chrome不支持css字体小于12px的解决办法
    处理CSS前缀问题的神器——AutoPrefixer
    CSS | 字体系列
    qemu-img 命令讲解
    全面理解 git
  • 原文地址:https://www.cnblogs.com/Opaser/p/4360890.html
Copyright © 2011-2022 走看看