zoukankan      html  css  js  c++  java
  • POJ 1716 Integer Intervals#贪心

    (~ ̄▽ ̄)~*

    //求一个集合,这个集合与任意一个区间的交集,需至少有两个数字
    //贪心过程:按n个区间的最右值从小到大对区间进行排列,
    //集合首先取第一个区间的最右两个数字,
    //到第二个区间,判断集合里的数有没有在区间里
    //没有的话,就从第二个区间的最右开始往左取(cnt=0取最后两个数,cnt=1取最后一个数)
    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    #include<vector>
    using namespace std;
    
    struct interval
    {
        int l,r;
    }a[10005];
    
    bool cmp(interval a,interval b)
    {
        return a.r<b.r;
    }
    
    int main()
    {
        int n,res=0;
    
        scanf("%d",&n);
        for(int i=0;i<n;i++)
            scanf("%d %d",&a[i].l,&a[i].r);
        sort(a,a+n,cmp);
    
        vector<int> Set;
        Set.push_back(a[0].r-1);
        Set.push_back(a[0].r);
        res=2;
        for(int i=1;i<n;i++)
        {
            int cnt=0;
            for(int j=0;j<Set.size();j++)
            {
                if(Set[j]>=a[i].l&&Set[j]<=a[i].r)
                    cnt++;
    
            }
            if(cnt==0)
            {
                Set.push_back(a[i].r-1);
                Set.push_back(a[i].r);
                res+=2;
            }
            else if(cnt==1)
            {
                Set.push_back(a[i].r);
                res++;
            }
        }
        printf("%d
    ",res);
        return 0;
    }
  • 相关阅读:
    杭电2054
    M1/M2总结
    软件开发相关的读书笔记 问题与方法
    代码复审1234跟我一起来
    电梯调度算法简述
    Pair_Work Project
    读书笔记摘录:
    Individual Project
    个人阅读作业——软件工程M1/M2的总结
    个人阅读作业2
  • 原文地址:https://www.cnblogs.com/atmacmer/p/5216422.html
Copyright © 2011-2022 走看看