Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

Re:这个题好象没有人问~不好意思,能不能给个提示!

Posted by atlas_of_rruucc at 2004-09-12 22:56:23 on Problem 1828
In Reply To:这个题好象没有人问~不好意思,能不能给个提示! Posted by:helloeveryone at 2004-09-12 22:35:44
这样是比较慢
可以考虑先把点按Y值从大到小排序
然后从大到小扫描一边
扫描时如果该点X值大于之前X的最大值答案就加1

> 我是象每次找到一个极大的值
> 然后根据这个值,删除中间肯定不是值
> 然后一直求到全都删除位置
> 
> 
> #include <stdio.h>
> #include <stdlib.h>
> 
> struct monkey
> {
> 	long x;
> 	long y;
> };
> struct node
> {
> 	struct monkey pos;
> 	struct node * pnext;
> };
> int main()
> {
> 	int n,i;
> 	while(scanf("%d",&n),n!=0)
> 	{
> 		struct monkey temp;
> 		struct node *phead,*ptemp,*ptail;
> 		phead=(struct node*)malloc(sizeof(struct node));
> 		phead->pnext=NULL;
> 		for(i=0;i<n;++i)
> 		{
> 			ptemp=(struct node*)malloc(sizeof(struct node));
> 			ptemp->pnext=NULL;
> 			scanf("%d %d",&ptemp->pos.x,&ptemp->pos.y);
> 			if(i==0)
> 			{
> 				temp.x=ptemp->pos.x;
> 				temp.y=ptemp->pos.y;
> 
> 				phead=ptemp;
> 				ptail=ptemp;
> 			}
> 			else
> 			{
> 				if(temp.x < ptemp->pos.x || temp.x==ptemp->pos.x&&temp.y < ptemp->pos.y)
> 				{
> 					temp.x=ptemp->pos.x;
> 					temp.y=ptemp->pos.y;
> 				}
> 				ptail->pnext=ptemp;
> 				ptail=ptemp;
> 			}
> 		}
> 		int count=0;
> 		do
> 		{
> 			++count;
> 			for(ptemp=phead,ptail=phead;ptemp!=NULL;)
> 			{
> 				
> 				if(ptemp->pos.x<=temp.x && ptemp->pos.y<=temp.y)
> 				{
> 					if(ptemp==phead)
> 					{
> 						phead=phead->pnext;
> 						ptemp=phead;
> 						ptail=phead;
> 					}
> 					else
> 					{
> 						ptail->pnext=ptemp->pnext;
> 						ptemp=ptail->pnext;
> 					}
> 				}
> 				else 
> 				{
> 					ptail=ptemp;
> 					ptemp=ptemp->pnext;
> 				}
> 			}	
> 			for(ptemp=phead;ptemp!=NULL;ptemp=ptemp->pnext)
> 			{
> 				if(ptemp==phead||temp.x>ptemp->pos.x || temp.x==ptemp->pos.x&&temp.y > ptemp->pos.y)
> 				{
> 					temp.x=ptemp->pos.x;
> 					temp.y=ptemp->pos.y;
> 				}
> 			}
> 		}while(phead!=NULL);
> 		printf("%d\n",count);
> 	}
> 	return 0;
> }
> 
> 
> 			
> 	

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator