POJ 2376 Cleaning Shifts [贪心]
来源:互联网 发布:高达模型独角兽淘宝 编辑:程序博客网 时间:2024/03/28 21:34
Description
给一个1..T的区间,然后N个子区间,取最少的把这个区间填满,求这个最小值
Algorithm
以区间开始为关键字升序排序,如果左边不能覆盖,那肯定就不行。这样就选好了最开始的一块。那当然是选所以1开头的右边区间最大的一块。第二块就是在这1..y+1中再找个右边最大的一块,然后不断更新。如果找不到,那就不能填满,当全部找完以后,再判断能不能填满
Code
#include <cstdio>#include <iostream>#include <algorithm>using namespace std;const int maxn = 20000;class V{public: int x, y;};bool compare(V a, V b){ if (a.x < b.x) return true; if (a.x > b.x) return false; if (a.x == b.x) if (a.y > b.y) return true; return false;}int main(){ int n, t; scanf("%d%d", &n, &t); V a[maxn]; for (int i=0;i<n;i++) { int x, y; scanf("%d%d", &x, &y); a[i].x = x; a[i].y = y; } sort(a, a+n, compare); if (a[0].x!=1) { puts("-1"); return 0; } int last = a[0].y; int last_max = last; int i = 0; int ans = 1; do { if (last >= t) break; if (a[i].x>last+1) { ans = -1; break; } while (a[i].x<=last+1 && i<n) { if (a[i].y > last_max) last_max = a[i].y; i++; } last = last_max; ans++; }while(i<n); if (last_max < t) ans = -1; printf("%d", ans); return 0;}
新技能GET
用sort函数进行多关键字排序
生词
- assign 分配
- chore 家务
- barn 谷仓
- interval 区间
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(贪心)
- 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(贪心)
- 【贪心+排序】poj 2376 Cleaning Shifts
- java反射 之Class类
- LeetCode题解:Word Pattern
- sass数据类型
- NYOJ——01串
- java面试题
- POJ 2376 Cleaning Shifts [贪心]
- dubbo的理解(一)
- sass运算
- Java 代码混淆器
- OpenCV坐标体系的初步认识
- Linux入门(一)文件管理
- 直流电机带编码器,PID控制
- sass循环
- POJ 2049