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

用二分做的,老是w,是不是输出格式的错误啊,请大牛找找,谢谢了。

Posted by dakecaoxin at 2010-03-10 12:34:18 on Problem 2318
#include <iostream>
using namespace std;
__int64 a[5050],b[5050],box[5050];
int main()
{    
	int n;
	__int64 m,d,u,r,l;
	int i,j;
	__int64 x,y;
	__int64 h;
	__int64 lef,rig;
	while(1){
		scanf("%d",&n);
		if(n==0)break;
		scanf("%I64d%I64d%I64d%I64d%I64d",&m,&d,&u,&r,&l);h=u-d;
		//输入隔离边
		a[0]=l;b[0]=l;
		memset(box,0,sizeof(box));
		for(i=1;i<=n;i++)
			scanf("%I64d%I64d",&a[i],&b[i]);
		a[n+1]=r;b[n+1]=r;
		//输入玩具位置。用二分求位置
		for(i=1;i<=m;i++){
			scanf("%I64d%I64d",&x,&y);
			lef=0;rig=n+1;
			
			while(lef+1<rig){
				j=(rig+lef)/2;
				if(a[j]!=b[j]&&(x-b[j])*h<(y-l+0.0)*(a[j]-b[j])){rig=j;}
				else if(a[j]==b[j]&&x<a[j]){rig=j;}//斜率不存在。
				else lef=j;
			}
			//记录盒子放的东西数目。
			rig--;
			box[rig]++;
		}
		//输出
		for(i=0;i<=n;i++){
		printf("%d: %d\n",i,box[i]);
		}
		cout<<endl;
	}   
	  
	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