POJ 2376 Cleaning Shifts (贪心算法)
来源:互联网 发布:在linux服务器搭建svn 编辑:程序博客网 时间:2024/05/17 09:03
这是一条 关于贪心算法的题目。
重点是特殊点的判断问题,第一种是没有开始点,即没有开始点为1 的。第二种就是没有结束点,即没有终点为T 的。
显然这两种都是应该输入-1的。 然而还有另外一种情况,可以看一下 这种样例:
3 10
1 3
4 7
8 10
这样,显然也是应该输出-1 的。
将这三种情况判断到,然后就使用贪心。
用一个结构存储数据,一个before(b)一个end(e)。
然后排一下序,自己写一下cmp函数即可。
下面只要注意判断基本没问题。
最后 AC Memory: 876K Time: 63MS
附上代码。
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int Max = 25000;int N, T;struct node{int b, e;}cows[25005];bool cmp( const node & i1, const node & i2 ){return i1.b < i2.b;}int main(){scanf( "%d%d", &N, &T );for( int i = 0; i < N; ++ i ) { scanf( "%d%d", & cows[i].b, &cows[i].e ); }sort( cows, cows+N,cmp );int num = 0;intright = 0;int top = 0; while( right < T ) {int begin = right + 1;for( int i = top; i < N; ++ i ){if( cows[i].b <= begin &&cows[i].e >= begin ) { right = cows[i].e > right ? cows[i].e : right; }else if( cows[i].b > begin ) {top = i;break;}}if( begin > right ) break;else ++ num;}if( right != T ) num = -1;printf( "%d\n", num);return 0;}
0 0
- POJ 2376 Cleaning Shifts (贪心算法)
- poj 2376 Cleaning Shifts( 贪心 )
- POJ 2376 Cleaning Shifts 贪心
- poj 2376 Cleaning Shifts( 贪心 )
- poj 2376 Cleaning Shifts 贪心
- 贪心-poj 2376-Cleaning Shifts
- POJ 2376 - Cleaning Shifts(贪心)
- Cleaning Shifts - POJ 2376 贪心
- Cleaning Shifts (poj 2376 贪心)
- Cleaning Shifts - POJ 2376 贪心
- [贪心] poj 2376 Cleaning Shifts
- [贪心] poj 2376 Cleaning Shifts
- POJ 2376 Cleaning Shifts [贪心]
- Poj 2376 Cleaning Shifts【贪心】
- POJ 2376 Cleaning Shifts 贪心
- POJ 2376 Cleaning Shifts(贪心)
- POJ 2376 Cleaning Shifts 贪心
- POJ 2376 Cleaning Shifts(贪心)
- C Primer Plus随笔
- 使用 Apache Lucene 和 Solr 4 实现下一代搜索和分析
- 【java并发】juc Executor框架详解
- ARM汇编冒泡排序之汇编调用c语言
- hadoop-2.2.0安装警告 (ssh: Could not resolve hostname warning)
- POJ 2376 Cleaning Shifts (贪心算法)
- linux 更改文件权限(子文件夹)
- U盘装Win7,无需软碟通刻录镜像,把Win7镜像文件拉到U盘就可装系统
- poj1787 Charlie's Change
- iOS-----IOS多线程开发
- TF-IDF与余弦相似性的应用(一):自动提取关键词
- java得到两个日期相差的天数
- AngryBot之Shader分析
- webview乱码解决方法