贪心 —— 今年暑假不AC
贪心基本题, 有助于理解贪心算法的思想
#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的更多相关文章
- HDU 2037 今年暑假不AC (贪心)
今年暑假不AC Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
- HDU2037 今年暑假不AC 贪心算法
贪心算法 : 贪心算法就是只考虑眼前最优解而忽略整体的算法, 它所做出的仅是在某种意义上的局部最优解, 然后通过迭代的方法相继求出整体最优解. 但是不是所有问题都可以得到整体最优解, 所以选择贪心策略 ...
- HDU 2037 今年暑假不AC(贪心,区间更新,板子题)
今年暑假不AC Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Su ...
- 今年暑假不AC【贪心】
Problem Description "今年暑假不AC?""是的.""那你干什么呢?""看世界杯呀,笨蛋!"" ...
- HDOJ2037 今年暑假不AC (经典的贪心问题)
Description “今年暑假不AC?” “是的.” “那你干什么呢?” “看世界杯呀,笨蛋!” “@#$%^&*%...” 确实如此,世界杯来了,球迷的节日也来了,估计很多ACMer也会 ...
- hdu2037今年暑假不AC(贪心,活动安排问题)
今年暑假不AC Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total Submi ...
- 今年暑假不AC (贪心)
Description “今年暑假不AC?” “是的.” “那你干什么呢?” “看世界杯呀,笨蛋!” “@#$%^&*%...” 确实如此,世界杯来了,球迷的节日也来了,估计很多ACMer也会 ...
- HDOJ.2037 今年暑假不AC (贪心)
今年暑假不AC 点我挑战此题 题意分析 给出来n组节目的起止时间,让求出所最多能观看的完整节目个数. 贪心策略:按照节目的结束时间升序排序,比较下一项的开始时间是否比上一项的结束时间大,是的话计数器+ ...
- HDU - 2037 今年暑假不AC 贪心(求序列中不重叠子序列的最大值问题)
HDU2037 今年暑假不AC 贪心算法 大意: 每次测试数据输入一个n,然后输入n对的电视节目播放时间:开始时间及结束时间, 求这个人能看的最多的完整的节目数. 解题思路: 对于这道解题,是对每个 ...
随机推荐
- 计算概论(A)/基础编程练习2(8题)/6:数组逆序重放
#include<stdio.h> int main() { // 输入n个整数 ; scanf("%d", &n); // 循环读入元素 while(scan ...
- python通过sftp远程传输文件
python提供了一个第三方模块paramiko,通过这个模块可以实现两台机器之间的网络连接,sftp是paramiko的一个方法,使用sftp可以在两台机器之间互相传输 拷贝文件.然而paramik ...
- Docker学习笔记之在开发环境中使用服务发现
0x00 概述 服务发现应用是很多服务化系统的组成部分,所以在开发.测试环境中也就有必要配备一套服务发现体系来配合我们的开发.测试工作.在这一小节里,我们就来谈谈如何在 Docker 环境下部署服务发 ...
- JS截取字符串中数字
今天项目中需要在一个字符串中截取一个数字,然后数字参与运算.搜了一下,有好多好用的方式截取字符串. 1,使用parseInt() var str ="4500元"; var num ...
- mysql/mariadb应该使用utf8mb4而不是utf8
详情参考https://mp.weixin.qq.com/s?__biz=MzIwMzg1ODcwMw==&mid=2247487968&idx=1&sn=2ff7b511f6 ...
- MyBatis 与 Hibernate 到底哪个更快?
前言 由于编程思想与数据库的设计模式不同,生出了一些ORM框架. 核心都是将关系型数据库和数据转成对象型.当前流行的方案有Hibernate与myBatis. 两者各有优劣.竞争激烈,其中一个比较重要 ...
- media静态文件统一管理 操作内存的流 - StringIO | BytesIO PIL:python图片操作库 前端解析二进制流图片(了解) Admin自动化数据管理界面
一.media ''' 1. 将用户上传的所有静态文件统一管理 -- settings.py -- MEDIA_ROOT = os.path.join(BASE_DIR, 'media') 2. 服务 ...
- ODAC(V9.5.15) 学习笔记(四)TMemDataSet (1)
所有的数据集类组件都是从TMemDataSet继承下来的,该组件实现了内存中对数据的管理,其主要的属性.方法和事件如下. 1.数据更新 名称 类型 说明 CachedUpdates Boolean 数 ...
- Hunter’s Apprentice 【判断多边形边界曲线顺逆时针】
问题 H: Hunter's Apprentice 时间限制: 1 Sec 内存限制: 128 MB 提交: 353 解决: 39 [提交] [状态] [命题人:admin] 题目描述 When ...
- centos6.5下安装mysql5.6
链接: https://blog.csdn.net/liangzhuoxun/article/details/81572094 该链接有个错误: 让修改的profile文件立即生效的命令为./etc/ ...