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

测了N组数据不知道为什么WA,那位兄弟能帮忙开你一下指点一下啊

Posted by Bertrand at 2009-09-02 14:07:43 on Problem 2376
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
using namespace std;
#define maxn 25005
int N,T;
struct bow{
	int start;
	int end;
}cow[maxn];
int used[maxn];
int cmp(const void*a,const void*b)
{
	struct bow *c=(bow*)a;
	struct bow *d=(bow*)b;
	if(c->end!=d->end) return d->end-c->end;
	else return c->end-d->end;
}
void read()
{
	int i;
	for(i=0;i<N;i++)
		scanf("%d%d",&cow[i].start,&cow[i].end);
	qsort(cow,N,sizeof(cow[0]),cmp);
	/*for(i=0;i<N;i++)
		cout<<cow[i].start<<' '<<cow[i].end<<endl;*/

}
void solve()
{
	int i,op,num,j;
	int start,end;
	int temp,tempj;
	int dur,min=0x7fffffff;
	bool flag=0;
	if(cow[0].end<T)
	{
		printf("-1\n");
		return;
	}
	for(i=0;i<N;i++)
	{
		if(cow[i].start==1)
		{
			flag=1;
			break;
		}
	}
	if(flag==0)
	{
		printf("-1\n");
		return;
	}
	for(i=0;i<N;i++)
	{
		if(cow[i].end!=T)
		{
			op=i;//找出所有可能成立的解
			break;
		}
	}
	
	//cout<<op<<endl;
	for(i=0;i<op;i++)
	{
		memset(used,0,sizeof(used));
		num=1;
		used[i]=1;
		dur=cow[i].end-cow[i].start+1;
		start=cow[i].start;
		end=cow[i].end ;
        if(dur==T)
		{
			printf("%d\n",num);
			return;
		}
		else{
			bool flag=0;
			int count=0;
			while(start!=1)
			{ 
				count=0;
				for(j=N-1;j>=0;j--)
			{
				if(cow[j].start<start&&cow[j].end>=start-1&&used[j]==0)
				{
					if(count==0)
					{
						temp=cow[j].start;
						tempj=j;
						count++;
					}
					else
					{
						if(cow[j].start<temp)
						{
							temp=cow[j].start;
							tempj=j;
							count++;
						}
						    
					}
				}
				
			}
				if(count==0)
					break;
				start=temp;
				used[tempj]=1;
                num++;
			
		}
			if(start==1)
			{
				if(num<min)
					min=num;
			}
		}
		
	}
	printf("%d\n",min);
}
int main()
{
while(cin>>N>>T)
{
		read();
		solve();
}
	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