您的位置:首页 > 其它

pku 2352

2008-12-14 21:02 375 查看
#include <stdio.h>

#include <string.h>

#include <algorithm>

typedef struct point

{

int x;

int y;

}point;

int main()

{

int N;

int i,j,k;

scanf("%d",&N);

point *p=new point
;

int *hash=new int
;

int *temp=new int
;

memset(hash,0,N*sizeof(int));

memset(temp,0,N*sizeof(int));

for(i=0;i<N;i++)

scanf("%d%d",&p[i].x,&p[i].y);

int hash2[32010]={0};

for(i=0;i<N;i++)

{

int flag=0;

for(j=i-1;j>=0;j--)

if(p[j].x<=p[i].x)

{

flag=1;

temp[i]=temp[j]+1;

break;

}

if(flag)

{

for(k=p[j].x+1;k<=p[i].x;k++)

temp[i]+=hash2[k];

}

hash[temp[i]]++;

hash2[p[i].x]++;

}

for(i=0;i<N;i++)

printf("%d/n",hash[i]);

delete []p;

delete []hash;

delete []temp;

return 0;

}

此解法为hash的充分运用。据说一种简单的解法是用线段树,我会学习这种数据结构来解试一试的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: