HDU 2037 今年暑假不AC (区间贪心)
2016-05-24 23:41
260 查看
题意:又是中文题。。。
析:先说一下区间贪心的一个定理,选择不相交的区间:数轴上有n个开区间(ai, bi)。选择尽量多的区间,使得这些区间两两不相交,贪心策略是,一定是选bi小的。(想一下为什么)。
知道这个的话,这个问题还不so easy!先对每个节目结束的时间排序,然后一个一个的选,保证没有相交,也就是说当前的开始时间一定要是上一个后面或者上一个刚结束当前就开始就OK了。
代码如下:
析:先说一下区间贪心的一个定理,选择不相交的区间:数轴上有n个开区间(ai, bi)。选择尽量多的区间,使得这些区间两两不相交,贪心策略是,一定是选bi小的。(想一下为什么)。
知道这个的话,这个问题还不so easy!先对每个节目结束的时间排序,然后一个一个的选,保证没有相交,也就是说当前的开始时间一定要是上一个后面或者上一个刚结束当前就开始就OK了。
代码如下:
#include <iostream> #include <cstdio> #include <algorithm> using namespace std; typedef long long LL; struct node{ int s, e; node() { } node(int ss, int ee) : s(ss), e(ee) { } bool operator <(const node &p) const { return e < p.e; } }; node a[110]; int main(){ int n; while(scanf("%d", &n) && n){ for(int i = 0; i < n; ++i) scanf("%d %d", &a[i].s, &a[i].e); sort(a, a+n); int cnt = 0; int ss = a[0].e; for(int i = 1; i < n; ++i){ if(a[i].s >= ss){ ++cnt; ss = a[i].e; } } printf("%d\n", cnt+1); } return 0; }
相关文章推荐
- 第七届 科技节 电子设计大赛 二等奖作品---智能家居
- C++作业6
- 模块(序列化(json&pickle)+XML+requests)
- RFIDler:一款定义RFID的读、写、仿真器的开源软件
- iOS开发小技巧--适当的清空模型中的某个数据,达到自己的需求,记得最后将数据还原(百思项目评论页面处理最热评论)
- elasticsearch2.2系列一(es的安装)
- 二叉树之遍历(递归和非递归解法)
- Java之类的主动使用和被动使用
- 【struts1】--Servlet讲解MVC框架基本原理
- Celery用户指引--------Application
- jquery的遍历用法
- POJ 3624 Charm Bracelet (01背包)
- Android View的onTouchEvent和OnTouch区别
- 最基本的委托
- 原码,反码以及补码
- 科技节编程大赛三等奖作品——杨逍
- jQuery高级技巧——性能优化篇
- android MD5加密
- AngularJS 表达式
- HDU 2602 Bone Collector(01背包)