雕刻时光

just do it……nothing impossible
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

贪心好题——poj3044

Posted on 2011-12-02 15:39  huhuuu  阅读(369)  评论(0编辑  收藏  举报

题意:

给你一个建筑物群的轮廓,求该建筑物群最少由几栋楼房组成(楼房是矩形)

思路:贪心

一看数据范围怎么大,搜索神马的就算了

从后往前扫,将符合的都标记掉(注意高度为0的没有楼房)

View Code
#include<stdio.h>
#include<string.h>
const int N=50009;

struct data
{
int x,y;
}s[N];
bool used[N];

int main()
{
int n,w;
while(scanf("%d%d",&n,&w)!=EOF)
{
int i,j;
for(i=1;i<=n;i++)
{
scanf("%d%d",&s[i].x,&s[i].y);
used[i]=0;
}

int add=0;
for(i=n;i>=1;i--)
{
if(s[i].y==0)continue;
if(used[i]==1)continue;

for(j=i-1;j>=1;j--)
{
if(s[i].y<=s[j].y)
{
if(s[i].y==s[j].y)
used[j]=1;
}
else{
break;
}
}
add++;
}

printf("%d\n",add);
}
}