poj 2376解题报告(详细) 带几组测试数据
来源:互联网 发布:yum安装hba卡rpm包 编辑:程序博客网 时间:2024/05/21 08:41
题目链接:http://poj.org/problem?id=2376
farmer John要安排他的牛清理牛棚,一共有T个牛棚要清理,每头牛可以清理相邻的牛棚。比如,一头牛可以清理4-7号牛棚。当然了,牛清理的牛棚可以重叠。现在要你求出可以完成牛棚的清理的最少头牛的个数,不可以就输出-1.
一道区间重叠问题。排序+贪心可解。但是题目有个陷阱,容易让人走入思维误区。
给出2个区间。
2 5
6 8
如果用数轴表示,这个区间应该是不重合的。但是,实际情况是,一头牛清理完2-5号,下一头牛可以从6号开始清理,这很正常嘛。然后讨论区很多人(包括我)一开始都认为是最多到5号开始清的。
先来提出贪心策略吧。
先给出几个区间。我们要填满1-10区间
1 7
1 5
5 9
3 10
9 10
在开始节点相同的情况是我们优先选择结束节点大的。1 7。
下一步,在上一个选择的区间的范围内(注意1 7这个区间可以选择8为开始节点的区间)我们选择结束节点大的3 10区间.然后结果出来了,我们只要2个区间就可以覆盖整个目标区间了。
概括起来就是,选择开始节点在上一区间范围内结束节点大的区间。
這题就可以解决了?当然不是了。
还有些细节要处理,首先是题目给的测试据不是按顺序的,每次选择区间如果遍历整个数组就显得效率不高了。所以应该要对给出的区间进行排序。按什么排呢?开始节点还是结束节点?在这题里,2种都可以,我觉得按开始节点排更符合常人的思考习惯。
要注意的是,如果用两个数组保存区间的start和end的话,就要自己编写排序函数了,如果调用stl的sort(),开始数组的值还跟结束数组对应吗?
更好的方法,用stl的pair,first存放开始,second存放结束,这样直接调用sort,整个pair数组排好了。int早就定义了小于运算符,sort针对pair是按first来排序的。
当然也可以定义数据结构或者类,然后重载小于运算符,在调用sort()。
付测试数据,来自讨论区
用freopen测试,这个方便很多,不用一次一次输。
可以改变了标准输入流(键盘),从文本读取。
freopen(“input.txt”,”r”,stdin);
此方法非常好,建议用上。不然每次调试一个一个输很蛋疼。
第一组:
input 3 10 1 5 6 10 10 10output 2
第二组:
input 4 100 21 50 50 81 1 20 80 99output -1
第三组
input 6 10 1 5 2 6 3 4 4 5 7 10 2 3 output -1
- poj 2376解题报告(详细) 带几组测试数据
- poj 2184解题报告(详细)
- poj1001解题报告+测试数据
- poj 3297Open Source 解题报告(附测试数据
- POJ 2376 解题报告
- POJ(解题报告)
- poj3669解题报告(详细)
- poj 1338 ugly numbers和poj 2247Humble Numbers 解题报告(附详细分析)
- 【POJ1198 Solitaire 】 思路+解题报告+测试数据生成器
- POJ—1061 青蛙的约会 解题报告(超详细)
- 动态规划Always On the Run poj 1476解题报告(附详细分析)
- poj 1080 Human Gene Functions 解题报告(附详细分析)
- Image Perimeters(POJ)解题报告
- poj 1163解题报告(动态规划)
- POJ 2195 Going Home(解题报告)
- POJ 3414 Pots 解题报告(搜索)
- POJ 3122 Pie 解题报告(二分)
- Prime Path(POJ 3126)解题报告
- 快速排序
- iOS下拉刷新上拉加载更多EGOTableViewPullRefresh类库
- lintcode:Word Break
- Object_c基础——oc程序与C语言程序开发过程的异同简单认识
- cocos2dx 中的SEL_Callfunc,SEL_CallfuncN,SEL_CallfuncNd的用法
- poj 2376解题报告(详细) 带几组测试数据
- 微信发红包算法
- Cmake的介绍和使用 Cmake实践
- Android Studio 的下载和安装
- 获取表单中选中的文字
- Java 第二次作业:MySQL数据库及Java操作MySQL数据库
- Android 动态设置Activity背景的方法
- 《剑指Offer》学习笔记--面试题56:链表中环的入口结点
- CoreData简单使用流程分析