zoukankan      html  css  js  c++  java
  • 贪心

    贪心就是指根据眼前最优解求全局最优解,没有固定公式,毕竟不是深搜那样的固定算法

    对于每道题的贪心策略并不一样,需要现推

    例题:

    活动安排

    设有n个活动的集合E={1,2,…,n},其中每个活动都要求使用同一资源,如演讲会场等,而在同一时间内只有一个活动能使用这一资源。每个活动i都有一个要求使用该资源的起始时间si和一个结束时间fi,且si <fi。如果选择了活动i,则它在半开时间区间[si, fi)内占用资源。若区间[si, fi)与区间[sj, fj)不相交,则称活动i与活动j是相容的。也就是说,当si≥fj或sj≥fi时,活动i与活动j相容。选择出由相互兼容的活动组成的最大集合。

    思路:

    看到题目就先排序,然而要根据后端点排序,然后再按前端点遍历,这样可以保证活动最多,正确性交由读者证明

    代码:

    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    using namespace std;
    int n;
    struct tim{
        int s,e;
    }a[1005];
    bool cmp(tim x,tim y){
        return x.e<y.e;
    }
    int tot;
    int now;
    int main(){
        scanf("%d",&n);
        for(int i=1;i<=n;i++)
            scanf("%d%d",&a[i].s,&a[i].e);
        sort(a+1,a+1+n,cmp);
        for(int i=1;i<=n;i++){
            if(a[i].s>=now){
                tot++;
                now=a[i].e;
            }
        }
        printf("%d",tot);
        return 0;
    }
  • 相关阅读:
    linux创建用户与删除用户及问题解决(ubuntu)
    Build tool
    Version Control&Git
    IntelliJ IDEA激活
    KDJ 指标
    MACD 分析理解
    MACD 指标
    BOLL 指标
    IaaS,PaaS,SaaS 的区别
    Kubernetes 第十七章 调度器 污点和容忍 以及高级调度方式
  • 原文地址:https://www.cnblogs.com/648-233/p/10992914.html
Copyright © 2011-2022 走看看