POJ 2376 Cleaning Shifts
2018-01-16 18:15
204 查看
这就是个区间覆盖问题
前端点从小到大排序,后端点排不排都无所谓。
注意一点
p[i].b < p[i+1].a
这种情况是可以的 也就是说
p[i+1].a <= p[i].b+1;
而尾端点是
p[i+1].b > p[i].b;
用两个变量 代表当前区间,不断更新。
l , r
p[i].a <= l+1; l 代表上一个区间的最右端
p[i].b > r r = p[i].b;
// Cleaning Shifts.cpp: 定义控制台应用程序的入口点。
//
//#include "stdafx.h"
#include<cstdio>
#include<algorithm>
using namespace std;
const int N = 25000;
struct node
{
int a, b;
}p[N + 10];
bool cmp(const node &a, const node &b)
{
//if (a.a == b.a)
//return a.b > b.b;
return a.a < b.a;
}
int main()
{
int n, t;
scanf("%d%d", &n, &t);
for (int i = 0; i < n; i++)
scanf("%d%d", &p[i].a, &p[i].b);
sort(p, p + n, cmp);
int l, r, tot;
tot = 1;
l = 1; r = 0;
for (int i = 0; i < n; i++)
{
if (p[i].a <= l && p[i].b > r) r = p[i].b;
if (p[i].a > l && p[i].b > r)
{
l = r + 1;
if (p[i].a <= l)
{
r = p[i].b;
tot++;
}
else break;
}
}
if (r >= t) printf("%d\n", tot);
else printf("-1\n");
return 0;
}
前端点从小到大排序,后端点排不排都无所谓。
注意一点
p[i].b < p[i+1].a
这种情况是可以的 也就是说
p[i+1].a <= p[i].b+1;
而尾端点是
p[i+1].b > p[i].b;
用两个变量 代表当前区间,不断更新。
l , r
p[i].a <= l+1; l 代表上一个区间的最右端
p[i].b > r r = p[i].b;
// Cleaning Shifts.cpp: 定义控制台应用程序的入口点。
//
//#include "stdafx.h"
#include<cstdio>
#include<algorithm>
using namespace std;
const int N = 25000;
struct node
{
int a, b;
}p[N + 10];
bool cmp(const node &a, const node &b)
{
//if (a.a == b.a)
//return a.b > b.b;
return a.a < b.a;
}
int main()
{
int n, t;
scanf("%d%d", &n, &t);
for (int i = 0; i < n; i++)
scanf("%d%d", &p[i].a, &p[i].b);
sort(p, p + n, cmp);
int l, r, tot;
tot = 1;
l = 1; r = 0;
for (int i = 0; i < n; i++)
{
if (p[i].a <= l && p[i].b > r) r = p[i].b;
if (p[i].a > l && p[i].b > r)
{
l = r + 1;
if (p[i].a <= l)
{
r = p[i].b;
tot++;
}
else break;
}
}
if (r >= t) printf("%d\n", tot);
else printf("-1\n");
return 0;
}
相关文章推荐
- poj-1581
- poj2420 模拟退火
- Poj 1579 Function Run Fun
- POJ 3613 Cow Relays floyd + 快速幂
- day6 POJ 3126 Prime Path
- poj 1273 Drainage Ditches
- poj Children of the Candy Corn(BFS+DFS)
- POJ 1276 Cash Machine
- POJ 3580 SuperMemo Splay树各种区间操作
- POJ2255,Tree Recovery,二叉树重建
- POJ1753--HDU2209--深搜翻牌类游戏
- POJ:1861 Network
- POJ 3292 Semi-prime H-numbers (筛半H-素数)
- poj 1008 Maya Calendar(转换)
- POJ 2828 Buy Tickets
- POJ 1634 Who's the boss? 笔记
- POJ 3250 Bad Hair Day (单调栈)
- poj-1350 Cabric Number Problem
- POJ 3728 The merchant(经典LCA)
- poj 2942 Knights of the Round Table 圆桌骑士(双连通分量模板题)