【hdu2037】今年暑假不AC——贪心算法
2016-02-12 19:02
176 查看
毕竟是第一次用c++写题还是写篇blog记录一下。
题目在这里:点击打开链接
由于输入是乱序的,而一个节目固定有开始和结束时间,所以声明一个结构体,然后对结束时间排序,之后如果第i+1个的开始时间不小于第i个的结束时间,我们就能完整的看第i个节目,如果小于,那么就和第i+2个去比,以此类推。
题目很简单,接下来说说c++的事情。
首先最前面三行是新的信仰,cin直接给变量名就可以了不用记各种各样的占位符,但注意cin不接受常量,如果是字符的话需要声明变量用变量去做。
algorithm里面有各种各样的函数特别方便,可以不用手写快排惹,还有min max map什么的
注意sort用的时候,如果针对的不是命名空间内的变量类型,比如自己声明了一个结构体,那么就需要给他一个比较函数cmp来说明排序时参考的关键字。
题目在这里:点击打开链接
由于输入是乱序的,而一个节目固定有开始和结束时间,所以声明一个结构体,然后对结束时间排序,之后如果第i+1个的开始时间不小于第i个的结束时间,我们就能完整的看第i个节目,如果小于,那么就和第i+2个去比,以此类推。
题目很简单,接下来说说c++的事情。
首先最前面三行是新的信仰,cin直接给变量名就可以了不用记各种各样的占位符,但注意cin不接受常量,如果是字符的话需要声明变量用变量去做。
algorithm里面有各种各样的函数特别方便,可以不用手写快排惹,还有min max map什么的
注意sort用的时候,如果针对的不是命名空间内的变量类型,比如自己声明了一个结构体,那么就需要给他一个比较函数cmp来说明排序时参考的关键字。
#include <iostream> #include <algorithm> using namespace std; struct show { int start; int end; }; bool cmp(show a, show b) { return a.end < b.end; } int main() { int N = 0, count = 0, i = 0, temp = 0; show* show1; while (cin >> N, N) { count = 1; show1 = (show*)malloc(sizeof(show)*N); for (i = 0; i < N; i++) cin >> show1[i].start >> show1[i].end; sort(show1, show1 + N, cmp); temp = show1[0].end; for (i = 1; i < N; i++) { if (show1[i].start >= temp) { count++; temp = show1[i].end; } } cout << count << endl; free(show1); } return 0; }
相关文章推荐
- 大公司最喜欢问的Java集合类面试题
- hdu 5015 大数量反复类似操作问题/ 矩阵高速幂
- hdu2037 简单贪心
- 支付宝咻一咻怎么用 Android帮你实现咻一咻
- 整除关系基础知识
- Windows绘图基础
- Spark和Hadoop的关系
- 近5年133个Java面试问题列表
- Java序列化示例
- nullptr was not declared in this scope
- [算法]在行列都排好序的矩阵中找数
- 用cin输入变量的值时,如何以逗号作为分隔符
- 8613 锁
- andorid-Cursor查询后调moveToFirst解释
- 一篇关于工厂模式的文章
- bzoj1031 字符加密Cipher
- Android中常出现的内存泄漏情况分析
- 配置文件格式的选择
- mysql使用“.frm”文件恢复表结构
- BZOJ 2243 染色 树链剖分