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的充分运用。据说一种简单的解法是用线段树,我会学习这种数据结构来解试一试的。
#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的充分运用。据说一种简单的解法是用线段树,我会学习这种数据结构来解试一试的。
相关文章推荐
- pku2352 线段树
- PKU2352 stars
- pku 2352 Stars(线段树)
- PKU 2352 Stars
- PKU 2352 POJ 2352 Stars ( 线段树版 ) ACM 2352 IN PKU
- PKU 2352 Stars
- PKU 2352 Stars 求比较小的数字个数
- pku2352--stars---树状数组
- PKU2352 树状数组
- pku2352: Stars
- PKU 2352 Stars
- [Pku 2352 2155 Hdu 3584] 线段树(五) {树状数组}
- pku 2352 stars
- pku2352——Stars(经典树状数组的应用)
- Pku2352 Stars 树状数组
- PKU 2481 Cows & PKU 2352 Stars & HDU 1541 Stars
- PKU 2352 Stars
- PKU2352 Stars - 树状数组
- POJ2230 Watchcow——欧拉回路——Pku2230
- POJ2455 Secret Milking Machine ——二分答案+网络流——Pku2455