贪心5--活动选择

范仁义 范仁义     2022-09-07     605

关键词:

贪心5--活动选择

一、心得

 

二、题目和分析

 

问题描述:

        有一个需要使用每个资源的n个活动组成的集合S= {a1,a2,···,an },资源每次只能由一个活动使用。每个活动a都有一个开始时间和结束时间,且 0<= s < f < 。一旦被选择后,活动a就占据半开时间区间[s,f]。如果[s,f]和[s,f]互不重叠,则称两个活动是兼容的。该问题就是要找出一个由互相兼容的活动组成的最大子集。

三、代码和结果

 输入

11
3 5
1 4
12 14
8 12
0 6
8 11
6 10
5 7
3 8
5 9
2 13

 1 #include <iostream>
 2 #include <algorithm>
 3 using namespace std;
 4 struct act{
 5     int begin;
 6     int end;
 7 };
 8 
 9 int mycmp(const act &a,const act &b){
10     return a.end<b.end;
11 }
12 
13 //贪心,选最快结束就好 
14 int main(){
15     freopen("in.txt","r",stdin);
16     int n;
17     cin>>n;
18     act a[1005];
19     for(int i=1;i<=n;i++){
20         cin>>a[i].begin>>a[i].end;
21     }
22     sort(a+1,a+n+1,mycmp);
23     cout<<"排序后的序列"<<endl; 
24     for(int i=1;i<=n;i++){
25         cout<<a[i].begin<<" "<<a[i].end<<endl;
26     }
27     int total=0;
28     int begin=0;
29     for(int i=1;i<=n;i++){
30         if(a[i].begin>=begin){
31             total++;
32             begin=a[i].end;
33         }
34     
35     }
36     cout<<"ans:"<<total<<endl;
37     
38     return 0;
39 } 

活动选择-贪心(代码片段)

Description  学校在最近几天有n个活动,这些活动都需要使用学校的大礼堂,在同一时间,礼堂只能被一个活动使。由于有些活动时间上有冲突,学校办公室人员只好让一些活动放弃使用礼堂而使用其他教室。  现在给出n个... 查看详情

c++算法主题系列之贪心算法的贪心之术(代码片段)

1.前言贪心算法是一种常见算法。是以人性之念的算法,面对众多选择时,总是趋利而行。因贪心算法以眼前利益为先,故总能保证当前的选择是最好的,但无法时时保证最终的选择是最好的。当然,在局部利益最大化的同时,... 查看详情

活动选择的贪心算法与动态规划(未完成)

//greedy_algorithm.cpp:定义控制台应用程序的入口点。//#include"stdafx.h"#include<iostream>#include<queue>usingnamespacestd;#defineNofActivity11intc[NofActivity+1][NofActivity+1];intreme[NofActivity+1][No 查看详情

活动安排问题-贪心算法

贪心算法:贪心算法总是做出在当前看来最好的选择,也就是贪心算法不从整体最优化的角度考虑。它所做出的选择只是在某种意义上的局部最优选择性质:最优子结构性质当一个问题的最优解包含其子问题的最优解... 查看详情

算法导论笔记——第十六章贪心算法

...早的活动,则am在Sk的某个最大兼容活动子集中。 16.2贪心算法原理设计贪心算法步骤:1》将最优化问题转化为这样的形式:对其做出一次选择 查看详情

贪心算法-活动安排问题(代码片段)

...间的活动,为未安排活动留下尽可能多的时间。该算法的贪心选择的意义是使剩余的可安排时间段极大化,以便安排尽可能多的相容活动。(贪心算法是指在对问题求解时,不从整体最优上加以考虑,总是做出某种意义上的局部... 查看详情

《算法导论》读书笔记

  前言:贪心算法也是用来解决最优化问题,将一个问题分成子问题,在现在子问题最优解的时,选择当前看起来是最优的解,期望通过所做的局部最优选择来产生一个全局最优解。书中先从活动选择问题来引入贪心算法,分... 查看详情

贪心入门——活动安排问题

贪心入门的几个例题来自51nod问题描述  有若干个活动,第i个开始时间和结束时间是[Si,fi),只有一个教室,活动之间不能交叠,求最多安排多少个活动?输入第1行:1个数N,线段的数量(2<=N<=10000)第2-N+1行:每行2个数,线... 查看详情

数据结构与算法笔记(十七)——贪心算法及经典案例(找零问题背包问题拼接最大数字问题活动选择问题)(代码片段)

一、贪心算法贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的是在某种意义上的局部最优解。贪心算法并不保证会得到最优... 查看详情

数据结构与算法笔记(十七)——贪心算法及经典案例(找零问题背包问题拼接最大数字问题活动选择问题)(代码片段)

一、贪心算法贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的是在某种意义上的局部最优解。贪心算法并不保证会得到最优... 查看详情

nyoj14贪心解题报告

 会场安排问题时间限制:3000 ms | 内存限制:65535 KB难度:4 描述学校的小礼堂每天都会有许多活动,有时间这些活动的计划时间会发生冲突,需要选择出一些活动进行举办。小刘的工作就是安排学校小礼堂... 查看详情

[nyoj]会场安排问题-贪心

会场安排问题时间限制:3000 ms | 内存限制:65535 KB难度:4 描述学校的小礼堂每天都会有许多活动,有时间这些活动的计划时间会发生冲突,需要选择出一些活动进行举办。小刘的工作就是安排学校小礼堂的活... 查看详情

(转)贪心算法之精辟

问题一、活动安排问题问题表述:设有n个活动的集合E = {1,2,…,n},其中每个活动都要求使用同一资源,如演讲会场等,而在同一时间内只有一个活动能使用这一资源。每个活i都有一个要求使用该资源的起始时间si和一个... 查看详情

hdu2037今年暑假不ac(贪心)

HDU2037今年暑假不AC(贪心)题目:http://acm.hdu.edu.cn/showproblem.php?pid=2037很经典的活动安排问题变形,与算法教材的活动安排一样,依据结束时间进行排序,然后相容的累加就可以。//经典贪心问题活动时间安排的简单变形//按活动... 查看详情

nyoj14-会场安排问题(贪心)(代码片段)

14-会场安排问题内存限制:64MB时间限制:3000msSpecialJudge:Noaccepted:9submit:15题目描述:学校的小礼堂每天都会有许多活动,有时间这些活动的计划时间会发生冲突,需要选择出一些活动进行举办。小刘的工作就是安排学校小礼堂的活动... 查看详情

五大常用算法之三贪心算法

贪心算法贪心算法简介:  贪心算法是指:在每一步求解的步骤中,它要求“贪婪”的选择最佳操作,并希望通过一系列的最优选择,能够产生一个问题的(全局的)最优解。  贪心算法每一步必须满足一下条件:  1、... 查看详情

算法与程序设计:贪心算法

目录一、概念1.1贪心算法的基本要素1.1.1贪心选择性质1.1.2最优子结构性质1.2贪心算法与动态规划算法的差异二、举例2.1活动安排问题2.2最优装载问题2.3哈夫曼编码一、概念1.1贪心算法的基本要素贪心选择性质最优子结构性质1.1.1... 查看详情

贪心算法——java实现(代码片段)

概念:贪心的意思在于在作出选择时,每次都要选择对自身最为有利的结果,保证自身利益的最大化。题目:小明手中有1,5,10,50,100五种面额的纸币,每种纸币对应张数分别为5,2,2,3,5张。若小明需要支付456元,则需要... 查看详情