原文:http://blog.acmj1991.com/?p=599
题意:山上有猴子,每只猴子都有一个坐标当其它猴子的x和y不能同时>=它的坐标时,那么它就是大王。问山中有都少大王?
思路:开始做超时了..其实就是对x进行排序后y在递增序列中的数目就是答案
x↑ y↓
poj本着买一送一原则又送了2726基本一样
#include<iostream>
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
#define maxN 50010
struct node{
int x,y;
}po[maxN];
bool cmp(node a,node b)
{
if(a.x<b.x)return true;
if(a.x==b.x&&a.y<b.y)return true;
return false;
}
int main()
{
int n;
while(scanf("%d",&n)&&n)
{
for(int i=0;i<n;i++)
scanf("%d%d",&po[i].x,&po[i].y);
sort(po,po+n,cmp);
int head[maxN],num=0;
head[num++]=po[0].y;
for(int i=1;i<n;i++)
if(po[i].x!=po[i-1].x)
head[num++]=po[i].y;
int sum=1,minn=head[0];
for(int i=1;i<num;i++)
if(head[i]<minn){
sum++;
minn=head[i];
}
printf("%d\n",sum);
}
}