HDU 1051

1A, Greedy algorithm

#include <stdio.h>
#include <iostream>
#include <string.h>
#include <algorithm>

using namespace std;

#define LEN 5010

typedef struct Node{
	int l, w;
}Node;
Node node[LEN];
Node ans[LEN];

int cmp(Node a, Node b) {
	if(a.l == b.l) {
		return a.w < b.w;
	}
	return a.l < b.l;
}

int main() {
	int t, n;
	int i, j, k;
	scanf("%d", &t);
	for(i = 0; i < t; i++) {
		scanf("%d", &n);
		memset(ans, 0, sizeof(ans));
		for(j = 0; j < n; j++) {
			scanf("%d%d", &node[j].l, &node[j].w);
		}
		sort(node, node+n, cmp);
//		for(j = 0; j < n; j++) {
//			printf("%d %d\n", node[j].l, node[j].w);
//		}
		int index = 0;
		for(j = 0; j < n; j++) {
			for(k = 0; k < index; k++) {
				if(node[j].l >= node[k].l && node[j].w >= node[k].w) {
					node[k].l = node[j].l;
					node[k].w = node[j].w;
					break;
				}
			}
			if(k == index) {
				node[index].l = node[j].l;
				node[index].w = node[j].w;
				++index;
			}
		}
		printf("%d\n", index);
	}
	return 0;
}



你可能感兴趣的:(HDU 1051)