poj 1828:Monkeys' Pride

解題思路:

(1)快速排序,x升序,y升序

(2)倒序遍歷

#include<iostream>
#include<cstdio>
#include<cstdlib>
using namespace std;
struct monkey
{
	int x,y;
};
monkey v[50010];

int cmp(const void * a,const void *b)
{
	if((*(struct monkey*)a).x - (*(struct monkey*)b).x < 0)	//x升序 
		return -1;
	else if((*(struct monkey*)a).x - (*(struct monkey*)b).x == 0)	//y升序	
		return (*(struct monkey*)a).y - (*(struct monkey*)b).y;
	return 1;
}

int main()
{
	while(true)
	{
		int n;
		scanf("%d",&n);
		if(n==0)
			break;
		for(int i=0;i<n;i++)
			scanf("%d%d",&v[i].x,&v[i].y);
		int ans = 0;
		qsort(v,n,sizeof(v[0]),cmp);
		int max_y = v[n-1].y;
		ans++;
		for(int i=n-2;i>=0;i--)
			if(v[i].y > max_y)
			{
				ans++;
				max_y = v[i].y;
			}
		printf("%d\n",ans);
	}
	return 0;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章