HUD 2491 排序方法 贪心
(2010-08-28 19:01:01)
标签:
hud2491排序方法贪心it |
分类: 杂题 |
题目描述:
一个地方,只有一个牧师。
现在要举行n个婚礼, 告诉你每个婚礼的开始时间s和结束时间t。
牧师要在每个婚礼上进行主持,主持的时间至少比整个婚礼时间的一半还要多。
主持时间不能间断。
问你能不能找到一个合理的方案,使牧师满足所有婚礼的需求。
解题报告:
一开始想到贪心,但是很快就找到的反例。
随后,利用主持时间比婚礼的一半时间还要多,突然意识到:
任意的两个婚礼的主持时间是有序的,即:
对于婚礼i和婚礼j,如果婚礼i能在婚礼j之前主持,那么婚礼j必然“不能”在婚礼i之前主持。
反之同理。
根据这个条件,就可以排序出主持的顺序了,然后从头一边On的遍历,把每个婚礼的主持时间尽量往前靠,如果没有冲突,就是YES,否则NO
注意:给你的婚礼时间是时间点,比如1 5,表示婚礼从1开始,在5结束,即只有4的时间,而不是5.所以为了处理方便,5--即可。
代码可读性很好,如下:
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
typedef long long ll;
struct Node{
};
struct Node node[100010];
int n;
bool flag;
bool cmp(Node x, Node y){
}
ll mmax(ll a, ll b){
}
int main(){