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

1151请过了的人都过来看看啊! 在浙大上过了的,在这里就WA了,实在找不到错误了! :( (附代码)

Posted by wangyang788544 at 2005-11-01 13:26:32 on Problem 1151
做法是离散化处理!

#include<iostream>
#include<algorithm>
#include<memory>
#include<cmath> 
#include<stdio.h>
using namespace std;
double x[210],y[210],in[110][4];
bool xy[210][210];
double N=0.00000001,sum = 0.0;
int i,j,k,n_map;
void input();  void solve();    void cacu(); 
int main()
{ 
	int T=1;
	while(scanf("%d",&n_map) && n_map)
	{
		input();
		sort(x,x+2*n_map);
		sort(y,y+2*n_map);
		memset(xy,0,sizeof(xy));
		solve();
		cacu();
		printf("Test case #%d\nTotal explored area: %.2f\n\n",T++,sum);
	}
	return 0;
}
void input()
{
	k = 0;
	for(i = 0 ; i < n_map ; i++)
	{
		cin>>in[i][0]>>in[i][1]>>in[i][2]>>in[i][3];
		x[k] = in[i][0];
		y[k] = in[i][1];
		k++;
		x[k] = in[i][2];
		y[k] = in[i][3];
		k++;
	}

}

void solve(){
	for(i = 0 ; i < n_map; i++)	{
		int i1,j1,i2,j2, I, J;
		k = 0 ; 
		while(abs(x[k]-in[i][0])>N && k < 2*n_map) k ++;
		i1 = k;	k = 0;
		while(abs(y[k]-in[i][1])>N && k < 2*n_map) k ++;
		j1 = k; k = 0 ; 
		while(abs(x[k]-in[i][2])>N && k < 2*n_map) k ++;		 	i2= k;k = 0;
		while(abs(y[k]-in[i][3])>N && k < 2*n_map) k ++;
		j2 = k;
		for(I = i1 ; I < i2 ; I ++)
		for(J = j1 ; J < j2 ; J ++)	xy[I][J] = true;
	}
}
void cacu()
{
	sum = 0;
	for(i = 0 ; i < 2*n_map ; i ++)
	for(j = 0 ; j < 2 * n_map ; j++)
		sum += xy[i][j]*(x[i+1] - x[i] )*( y[j+1] - y[j]);
}
		






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