zoukankan      html  css  js  c++  java
  • 贪心-区间问题

    区间选点

    定N个闭区间[ai,bi],请你在数轴上选择尽量少的点,使得每个区间内至少包含一个选出的点。

    输出选择的点的最小数量。

    位于区间端点上的点也算作区间内。

    输入格式

    第一行包含整数N,表示区间数。

    接下来N行,每行包含两个整数ai,bi,表示一个区间的两个端点。

    输出格式

    输出一个整数,表示所需的点的最小数量。

    #include <iostream>
    #include <algorithm>
    using namespace std;
    
    const int N = 100010;
    
    int n;
    struct Range{
        int l, r;
    };
    Range range[N];
    bool cmp(Range a, Range b)
    {
        return a.r <= b.r;
    }
    int main()
    {
        cin>>n;
        for(int i = 0; i < n;i ++)
        {
            int a, b;
            cin>>a>>b;
            range[i] = {a,b};
        }
        sort(range, range+n, cmp);
        
        int res = 0, ed = -2e9;
        for(int i = 0 ; i<n;i++)
            if(range[i].l > ed)
            {
                res++;
                ed = range[i].r;
            }
            
        cout<<res<<endl;
    }

     区间分组

    给定N个闭区间[ai,bi],请你将这些区间分成若干组,使得每组内部的区间两两之间(包括端点)没有交集,并使得组数尽可能小。

    输出最小组数。

    输入格式

    第一行包含整数N,表示区间数。

    接下来N行,每行包含两个整数ai,bi,表示一个区间的两个端点。

    输出格式

    输出一个整数,表示最小组数

  • 相关阅读:
    Linux中配置Aria2 RPC Server
    Ubuntu无法进入Windows的NTFS分区
    Visualbox在UEFI模式下无法正常引导
    pacman安装软件包出现损坏
    Windows下禁用锁屏热键WinKey+L
    Linux中无权限使用sudo
    Windows 10 MBR转GPT
    oh-my-zsh的安装与基本配置
    Raspbian开启root账户
    xrandr: 命令行修改分辨率工具
  • 原文地址:https://www.cnblogs.com/longxue1991/p/12756333.html
Copyright © 2011-2022 走看看