贪心基本题, 有助于理解贪心算法的思想

#include <cstdio>

#include <algorithm>

using namespace std;

struct Program

{

int begin, end;

} programs[100];

/** 贪心: 贪心算法的基本步骤 :

*  1、从问题的某个初始解出发。

*  2、采用循环语句,当可以向求解目标前进一步时,就根据局部最优策略,得到一个部分解,缩小问题的范围或规模。

*  3、将所有部分解综合起来,得到问题的最终解。  */

/*  * 首先把每个节目的数据都存起来,开始时间和结束时间,然后按照开始时间来排序,

* 这里貌似可以不用二级排序,单单对开始时间排序就行了。

* 运用贪心: 要在所有节目中找出能够看到的完整的(也就是区间不重合)节目,

* 就可以想成分成各个小部分解,用for循环从begin时间小的开始算起,

* 设定一个边界值bound存你已经选好要看的节目的结束时间,再用结束时间和下一个节目的开始时间对比,

* 如果bound < next_program的begin 则 sum + 1,如果bound > next_program的begin,再对比bound和next_program的end,把较小的赋给bound,

* 相当于替换了之前那个节目(虽然已经++了),因为新节目的结束时间更早!

* 具体算法在下面的for里.  */

int cmp(const Program &a, const Program &b)  //按开始时间升序排列,如果开始时间相同则先结束的在前

{

if(a.begin == b.begin)

return a.end < b.end;

else

return a.begin < b.begin;

}

int main()

{

int n, i;

while(scanf("%d", &n), n)

{

for(i = 0; i < n; i ++)

scanf("%d%d", &programs[i].begin, &programs[i].end);

sort(programs, programs + n, cmp);

int bound, sum = 1;

bound = programs[0].end;

for(i = 1; i < n; i ++)

{             /* 贪心! */

if(bound <= programs[i].begin)

{

sum ++;

bound = programs[i].end;

}

else if(programs[i].end < bound)

{

bound = programs[i].end;

}

}

printf("%d\n", sum);

}

return 0;

}

贪心 —— 今年暑假不AC的更多相关文章

  1. HDU 2037 今年暑假不AC (贪心)

    今年暑假不AC Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

  2. HDU2037 今年暑假不AC 贪心算法

    贪心算法 : 贪心算法就是只考虑眼前最优解而忽略整体的算法, 它所做出的仅是在某种意义上的局部最优解, 然后通过迭代的方法相继求出整体最优解. 但是不是所有问题都可以得到整体最优解, 所以选择贪心策略 ...

  3. HDU 2037 今年暑假不AC(贪心,区间更新,板子题)

    今年暑假不AC Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Su ...

  4. 今年暑假不AC【贪心】

    Problem Description "今年暑假不AC?""是的.""那你干什么呢?""看世界杯呀,笨蛋!"" ...

  5. HDOJ2037 今年暑假不AC (经典的贪心问题)

    Description “今年暑假不AC?” “是的.” “那你干什么呢?” “看世界杯呀,笨蛋!” “@#$%^&*%...” 确实如此,世界杯来了,球迷的节日也来了,估计很多ACMer也会 ...

  6. hdu2037今年暑假不AC(贪心,活动安排问题)

    今年暑假不AC Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total Submi ...

  7. 今年暑假不AC (贪心)

    Description “今年暑假不AC?” “是的.” “那你干什么呢?” “看世界杯呀,笨蛋!” “@#$%^&*%...” 确实如此,世界杯来了,球迷的节日也来了,估计很多ACMer也会 ...

  8. HDOJ.2037 今年暑假不AC (贪心)

    今年暑假不AC 点我挑战此题 题意分析 给出来n组节目的起止时间,让求出所最多能观看的完整节目个数. 贪心策略:按照节目的结束时间升序排序,比较下一项的开始时间是否比上一项的结束时间大,是的话计数器+ ...

  9. HDU - 2037 今年暑假不AC 贪心(求序列中不重叠子序列的最大值问题)

    HDU2037 今年暑假不AC  贪心算法 大意: 每次测试数据输入一个n,然后输入n对的电视节目播放时间:开始时间及结束时间, 求这个人能看的最多的完整的节目数. 解题思路: 对于这道解题,是对每个 ...

随机推荐

  1. ubuntu 构建Xilinx交叉编译环境

    嵌入式系统软硬件协同设计实战指南_基于XILINX ZYNQ_13603826.pdf 202页

  2. GMIS 2017 大会陈雨强演讲:机器学习模型,宽与深的大战

    https://blog.csdn.net/starzhou/article/details/72819374 2017-05-27 19:15:36     GMIS 2017    10 0 5 ...

  3. MediaCodec在Android视频硬解码组件的应用

    https://yq.aliyun.com/articles/632892 云栖社区> 博客列表> 正文 MediaCodec在Android视频硬解码组件的应用   cheenc 201 ...

  4. Linux 安装本地 yum源

    放入Centos6.4的镜像光盘或找到镜像文件 [root]#mount /dev/cdrom  /media/cdrom  #挂载本地镜像 [root]#rm -rf /etc/yum.repo.d ...

  5. netty集成ssl完整参考指南(含完整源码)

    虽然我们在内部rpc通信中使用的是基于认证和报文头加密的方式实现安全性,但是有些时候仍然需要使用SSL加密,可能是因为对接的三方系统需要,也可能是由于open的考虑.中午特地测了下netty下集成ss ...

  6. AMQP 0.9.1和1.0协议差别以及rabbitmq支持情况

    RabbitMQ implements AMQP 1.0 via a plugin. However, AMQP 1.0 is a completely different protocol than ...

  7. python简说(五)操作文件

    f = open('users.txt',encoding='utf-8') #读文件的时候,必须存在在才可以读 文件对象,或者文件句柄res = f.read()print(res)f.close( ...

  8. (4运行例子)自己动手,编写神经网络程序,解决Mnist问题,并网络化部署

    ​1.联通ColaB 2.运行最基础mnist例子,并且打印图表结果  # https://pypi.python.org/pypi/pydot#!apt-get -qq install -y gra ...

  9. Java基础语法(下)

    1.数组动态初始化 //数据类型[] 数组名 = new 数据类型[数组长度]; int[] arr = new int[3]; /* * 左边: * int:说明数组中的元素类型是int类型 * [ ...

  10. poj 2096 Collecting Bugs - 概率与期望 - 动态规划

    Ivan is fond of collecting. Unlike other people who collect post stamps, coins or other material stu ...